1#ifndef _INCLUDE_GUARD_STRUCTURE_H_ 2#define _INCLUDE_GUARD_STRUCTURE_H_ 3 4#include <linux/time.h> 5#include <linux/wait.h> 6 7 8struct http_request; 9 10struct http_request 11{ 12 /* Linked list */ 13 struct http_request *Next; 14 15 /* Network and File data */ 16 struct socket *sock; 17 struct file *filp; 18 19 /* Raw data about the file */ 20 21 int FileLength; /* File length in bytes */ 22 int Time; /* mtime of the file, unix format */ 23 int BytesSent; /* The number of bytes already sent */ 24 int IsForUserspace; /* 1 means let Userspace handle this one */ 25 26 /* Wait queue */ 27 28 wait_queue_t sleep; /* For putting in the socket's waitqueue */ 29 30 /* HTTP request information */ 31 char FileName[256]; /* The requested filename */ 32 int FileNameLength; /* The length of the string representing the filename */ 33 char Agent[128]; /* The agent-string of the remote browser */ 34 char IMS[128]; /* If-modified-since time, rfc string format */ 35 char Host[128]; /* Value given by the Host: header */ 36 int HTTPVER; /* HTTP-version; 9 for 0.9, 10 for 1.0 and above */ 37 38 39 /* Derived date from the above fields */ 40 int IMS_Time; /* if-modified-since time, unix format */ 41 char TimeS[64]; /* File mtime, rfc string representation */ 42 char LengthS[14]; /* File length, string representation */ 43 char *MimeType; /* Pointer to a string with the mime-type 44 based on the filename */ 45 __kernel_size_t MimeLength; /* The length of this string */ 46 47}; 48 49 50 51/* 52 53struct khttpd_threadinfo represents the four queues that 1 thread has to deal with. 54It is padded to occupy 1 (Intel) cache-line, to avoid "cacheline-pingpong". 55 56*/ 57struct khttpd_threadinfo 58{ 59 struct http_request* WaitForHeaderQueue; 60 struct http_request* DataSendingQueue; 61 struct http_request* LoggingQueue; 62 struct http_request* UserspaceQueue; 63 char dummy[16]; /* Padding for cache-lines */ 64}; 65 66 67 68#endif 69

