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