return to first page linux journal archive
keywordscontents

Listing 1. /proc/sys/net/khttpd/structure.h

struct http_request
{
/* Linked list */
struct http_request *Next;
/* Network and File data */
struct socket	*sock;
struct file	*filp;
/* Raw data about the file */
int             FileLength;     /* File length in bytes */
int             Time;           /* mtime of the file, UNIX format */
int             BytesSent;      /* The number of bytes already sent */
int             IsForUserspace; /* 1 means let Userspace handle this
                                   one */
/* Wait queue */
wait_queue_t sleep;             /* For putting in the socket's
                                   waitqueue */
/* HTTP request information */
char		FileName[256];  /* The requested filename */
int		FileNameLength; /* The length of the string representing the
                                   filename */
char		Agent[128];     /* The agent-string of the remote browser */
char		IMS[128];       /* If-modified-since time,
                                   rfc string format */
char		Host[128];      /* Value given by the Host: header */
int		HTTPVER;        /* HTTP-version; 9 for 0.9,   10
                                   for 1.0 and above */
/* Derived date from the above fields */
int		IMS_Time;       /* if-modified-since time, UNIX format */
char		TimeS[64];      /* File mtime, rfc string representation */
char		LengthS[14];    /* File length, string representation */
char		*MimeType;      /* Pointer to a string with the
                                   mime-type
                                   based on the filename */
__kernel_size_t	MimeLength;     /* The length of this string */

};

/*
struct kHTTPd_threadinfo represents the four queues that 1 thread has to deal with.

It is padded to occupy 1 (Intel) cache-line, to avoid
"cacheline-pingpong".
*/

struct kHTTPd_threadinfo
{
       struct http_request* WaitForHeaderQueue;
       struct http_request* DataSendingQueue;
       struct http_request* LoggingQueue;
       struct http_request* UserspaceQueue;
       char  dummy[16];  /* Padding for cache-lines */
};