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 8 struct http_request; 9 10 struct 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 53 struct khttpd_threadinfo represents the four queues that 1 thread has to deal with. 54 It is padded to occupy 1 (Intel) cache-line, to avoid "cacheline-pingpong". 55 56 */ 57 struct 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