logging.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2. kHTTPd -- the next generation
  3. logging.c takes care of shutting down a connection.
  4. */
  5. /****************************************************************
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2, or (at your option)
  9.  * any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; if not, write to the Free Software
  18.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  *
  20.  ****************************************************************/
  21. #include <linux/kernel.h>
  22. #include <linux/skbuff.h>
  23. #include <linux/smp_lock.h>
  24. #include <net/tcp.h>
  25. #include <asm/uaccess.h>
  26. #include "structure.h"
  27. #include "prototypes.h"
  28. /*
  29. Purpose:
  30. Logging() terminates "finished" connections and will eventually log them to a 
  31. userspace daemon.
  32. Return value:
  33. The number of requests that changed status, thus the number of connections
  34. that shut down.
  35. */
  36. int Logging(const int CPUNR)
  37. {
  38. struct http_request *CurrentRequest,*Req;
  39. int count = 0;
  40. EnterFunction("Logging");
  41. CurrentRequest = threadinfo[CPUNR].LoggingQueue;
  42. /* For now, all requests are removed immediatly, but this changes
  43.    when userspace-logging is added. */
  44.    
  45. while (CurrentRequest!=NULL)
  46. {
  47. Req = CurrentRequest->Next;
  48. CleanUpRequest(CurrentRequest);
  49. threadinfo[CPUNR].LoggingQueue = Req;
  50. CurrentRequest = Req;
  51. count++;
  52. }
  53. LeaveFunction("Logging");
  54. return count;
  55. }
  56. void StopLogging(const int CPUNR)
  57. {
  58. struct http_request *CurrentRequest,*Next;
  59. EnterFunction("StopLogging");
  60. CurrentRequest = threadinfo[CPUNR].LoggingQueue;
  61. while (CurrentRequest!=NULL)
  62. {
  63. Next=CurrentRequest->Next;
  64. CleanUpRequest(CurrentRequest);
  65. CurrentRequest=Next;
  66. }
  67. threadinfo[CPUNR].LoggingQueue = NULL;
  68. LeaveFunction("StopLogging");
  69. }