亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? main.c

?? linux和2410結(jié)合開(kāi)發(fā) 用他可以生成2410所需的zImage文件
?? C
字號(hào):
/*kHTTPd -- the next generationMain programkHTTPd TNG consists of 1 thread, this main-thread handles ALL connectionssimultanious. It does this by keeping queues with the requests in differentstages.The stages are<not accepted> 		-	TCP/IP connection is not accepted yetWaitForHeaders		-	Connection is accepted, waiting for headersDataSending		-	Headers decoded, sending file-dataUserspace		-	Requires userspace daemon Logging			-	The request is finished, cleanup and loggingA typical flow for a request would be:<not accepted>WaitForHeadersDataSendingLoggingor<not accepted>WaitForHeadersUserspace*//**************************************************************** *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License as published by *	the Free Software Foundation; either version 2, or (at your option) *	any later version. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ****************************************************************/static int errno;#define __KERNEL_SYSCALLS__#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/signal.h>#include <linux/init.h>#include <linux/wait.h>#include <linux/smp_lock.h>#include <asm/unistd.h>#include "structure.h"#include "prototypes.h"#include "sysctl.h"struct khttpd_threadinfo threadinfo[CONFIG_KHTTPD_NUMCPU];  /* The actual work-queues */atomic_t	ConnectCount;atomic_t	DaemonCount;static int	ActualThreads; /* The number of actual, active threads */static int ConnectionsPending(int CPUNR){	if (threadinfo[CPUNR].DataSendingQueue!=NULL) return O_NONBLOCK;	if (threadinfo[CPUNR].WaitForHeaderQueue!=NULL) return O_NONBLOCK;	if (threadinfo[CPUNR].LoggingQueue!=NULL) return O_NONBLOCK;	if (threadinfo[CPUNR].UserspaceQueue!=NULL) return O_NONBLOCK;  return 0;}static wait_queue_head_t DummyWQ[CONFIG_KHTTPD_NUMCPU];static atomic_t Running[CONFIG_KHTTPD_NUMCPU]; static int MainDaemon(void *cpu_pointer){	int CPUNR;	sigset_t tmpsig;		DECLARE_WAITQUEUE(main_wait,current);		MOD_INC_USE_COUNT;		CPUNR=0;	if (cpu_pointer!=NULL)	CPUNR=(int)*(int*)cpu_pointer;	sprintf(current->comm,"khttpd - %i",CPUNR);	daemonize();		init_waitqueue_head(&(DummyWQ[CPUNR]));		/* Block all signals except SIGKILL, SIGSTOP and SIGHUP */	spin_lock_irq(&current->sigmask_lock);	tmpsig = current->blocked;	siginitsetinv(&current->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP)| sigmask(SIGHUP));	recalc_sigpending(current);	spin_unlock_irq(&current->sigmask_lock);			if (MainSocket->sk==NULL)	 	return 0;	add_wait_queue_exclusive(MainSocket->sk->sleep,&(main_wait));	atomic_inc(&DaemonCount);	atomic_set(&Running[CPUNR],1);		while (sysctl_khttpd_stop==0)	{		int changes = 0;								changes +=AcceptConnections(CPUNR,MainSocket);		if (ConnectionsPending(CPUNR))		{			changes +=WaitForHeaders(CPUNR);			changes +=DataSending(CPUNR);			changes +=Userspace(CPUNR);			changes +=Logging(CPUNR);			/* Test for incoming connections _again_, because it is possible			   one came in during the other steps, and the wakeup doesn't happen			   then.			*/			changes +=AcceptConnections(CPUNR,MainSocket);		}				if (changes==0) 		{			(void)interruptible_sleep_on_timeout(&(DummyWQ[CPUNR]),1);				if (CPUNR==0) 				UpdateCurrentDate();		}					if (signal_pending(current)!=0)		{			(void)printk(KERN_NOTICE "kHTTPd: Ring Ring - signal received\n");			break;		  		}		}		remove_wait_queue(MainSocket->sk->sleep,&(main_wait));		StopWaitingForHeaders(CPUNR);	StopDataSending(CPUNR);	StopUserspace(CPUNR);	StopLogging(CPUNR);		atomic_set(&Running[CPUNR],0);	atomic_dec(&DaemonCount);	(void)printk(KERN_NOTICE "kHTTPd: Daemon %i has ended\n",CPUNR);	MOD_DEC_USE_COUNT;	return 0;}static int CountBuf[CONFIG_KHTTPD_NUMCPU];/*The ManagementDaemon has a very simple task: Start the real daemons when the user wants usto, and cleanup when the users wants to unload the module.Initially, kHTTPd didn't have this thread, but it is the only way to have "delayed activation",a feature required to prevent accidental activations resulting in unexpected backdoors.*/static int ManagementDaemon(void *unused){	sigset_t tmpsig;	int waitpid_result;		DECLARE_WAIT_QUEUE_HEAD(WQ);			sprintf(current->comm,"khttpd manager");	daemonize();		/* Block all signals except SIGKILL and SIGSTOP */	spin_lock_irq(&current->sigmask_lock);	tmpsig = current->blocked;	siginitsetinv(&current->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP) );	recalc_sigpending(current);	spin_unlock_irq(&current->sigmask_lock);	/* main loop */	while (sysctl_khttpd_unload==0)	{		int I;						/* First : wait for activation */				sysctl_khttpd_start = 0;				while ( (sysctl_khttpd_start==0) && (!signal_pending(current)) && (sysctl_khttpd_unload==0) )		{			current->state = TASK_INTERRUPTIBLE;			interruptible_sleep_on_timeout(&WQ,HZ); 		}				if ( (signal_pending(current)) || (sysctl_khttpd_unload!=0) )		 	break;		 			/* Then start listening and spawn the daemons */		 			if (StartListening(sysctl_khttpd_serverport)==0)		{			continue;		}				ActualThreads = sysctl_khttpd_threads;		if (ActualThreads<1) 			ActualThreads = 1;					if (ActualThreads>CONFIG_KHTTPD_NUMCPU) 			ActualThreads = CONFIG_KHTTPD_NUMCPU;				/* Write back the actual value */				sysctl_khttpd_threads = ActualThreads;				InitUserspace(ActualThreads);				if (InitDataSending(ActualThreads)!=0)		{			StopListening();			continue;		}		if (InitWaitHeaders(ActualThreads)!=0)		{			I=0;			while (I<ActualThreads)			{				StopDataSending(I);				I++;			}			StopListening();			continue;		}			/* Clean all queues */		memset(threadinfo, 0, sizeof(struct khttpd_threadinfo));		 			I=0;		while (I<ActualThreads)		{			atomic_set(&Running[I],1);			(void)kernel_thread(MainDaemon,&(CountBuf[I]), CLONE_FS | CLONE_FILES | CLONE_SIGHAND);			I++;		}				/* Then wait for deactivation */		sysctl_khttpd_stop = 0;		while ( (sysctl_khttpd_stop==0) && (!signal_pending(current)) && (sysctl_khttpd_unload==0) )		{			if (atomic_read(&DaemonCount)<ActualThreads)			{				I=0;				while (I<ActualThreads)				{					if (atomic_read(&Running[I])==0)					{						atomic_set(&Running[I],1);						(void)kernel_thread(MainDaemon,&(CountBuf[I]), CLONE_FS | CLONE_FILES | CLONE_SIGHAND);						(void)printk(KERN_CRIT "kHTTPd: Restarting daemon %i \n",I);					}					I++;				}			}			interruptible_sleep_on_timeout(&WQ,HZ);						/* reap the daemons */			waitpid_result = waitpid(-1,NULL,__WCLONE|WNOHANG);					}						/* The user wants us to stop. So stop listening on the socket. */		if (sysctl_khttpd_stop!=0)			{			/* Wait for the daemons to stop, one second per iteration */			while (atomic_read(&DaemonCount)>0)		 		interruptible_sleep_on_timeout(&WQ,HZ);			StopListening();		}				}		sysctl_khttpd_stop = 1;	/* Wait for the daemons to stop, one second per iteration */	while (atomic_read(&DaemonCount)>0) 		interruptible_sleep_on_timeout(&WQ,HZ);					waitpid_result = 1;	/* reap the zombie-daemons */	while (waitpid_result>0)		waitpid_result = waitpid(-1,NULL,__WCLONE|WNOHANG);			StopListening();			(void)printk(KERN_NOTICE "kHTTPd: Management daemon stopped. \n        You can unload the module now.\n");	MOD_DEC_USE_COUNT;	return 0;}int __init khttpd_init(void){	int I;	MOD_INC_USE_COUNT;		I=0;	while (I<CONFIG_KHTTPD_NUMCPU)	{		CountBuf[I]=I;				I++;	}		atomic_set(&ConnectCount,0);	atomic_set(&DaemonCount,0);		/* Maybe the mime-types will be set-able through sysctl in the future */	   		 	AddMimeType(".htm","text/html"); 	AddMimeType("html","text/html"); 	AddMimeType(".gif","image/gif"); 	AddMimeType(".jpg","image/jpeg"); 	AddMimeType(".png","image/png"); 	AddMimeType("tiff","image/tiff"); 	AddMimeType(".zip","application/zip");	AddMimeType(".pdf","application/pdf"); 	AddMimeType("r.gz","application/x-gtar"); 	AddMimeType(".tgz","application/x-gtar");	AddMimeType(".deb","application/x-debian-package");	AddMimeType("lass","application/x-java");	AddMimeType(".mp3","audio/mpeg");	AddMimeType(".txt","text/plain");		AddDynamicString("..");	AddDynamicString("cgi-bin");	StartSysctl();		(void)kernel_thread(ManagementDaemon,NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);		return 0;}void khttpd_cleanup(void){	EndSysctl();}	module_init(khttpd_init)	module_exit(khttpd_cleanup)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久精| 精品精品欲导航| 九九精品一区二区| 亚洲乱码国产乱码精品精的特点 | 亚洲精品成a人| 精品国产一区二区国模嫣然| 91成人网在线| www.视频一区| 国产麻豆日韩欧美久久| 午夜久久久久久电影| 国产精品成人免费在线| 精品盗摄一区二区三区| 欧美在线一二三| 成人美女在线视频| 极品少妇一区二区三区精品视频 | 国产福利91精品| 日韩电影免费一区| 亚洲小少妇裸体bbw| 中文字幕一区二区三区四区不卡 | 国产精品综合二区| 日韩国产欧美一区二区三区| 亚洲欧美国产高清| 中文字幕不卡在线| 久久久一区二区| 精品欧美一区二区久久| 在线观看一区日韩| 日本电影欧美片| 色综合久久久久综合体桃花网| 国产激情一区二区三区| 国产一区二区三区国产| 久草这里只有精品视频| 久久精品国产**网站演员| 麻豆中文一区二区| 老司机精品视频线观看86| 日本欧美在线看| 日本午夜精品一区二区三区电影| 午夜伊人狠狠久久| 日韩中文字幕av电影| 视频在线观看一区二区三区| 亚洲一区二区精品久久av| 亚洲午夜影视影院在线观看| 亚洲一区二区三区四区的| 夜夜嗨av一区二区三区网页| 夜夜嗨av一区二区三区四季av| 亚洲精选在线视频| 亚洲超碰97人人做人人爱| 亚洲国产一区在线观看| 日韩影院免费视频| 久久99精品久久久久| 国产精品一二三四区| 福利一区二区在线| 成人国产免费视频| 日本国产一区二区| 91精品一区二区三区在线观看| 91精品国产入口在线| 精品国产91洋老外米糕| 欧美极品少妇xxxxⅹ高跟鞋 | 久久久久久久网| 久久久99精品久久| 中文字幕av一区 二区| 依依成人精品视频| 日韩国产成人精品| 久草精品在线观看| av色综合久久天堂av综合| 欧亚一区二区三区| 精品剧情v国产在线观看在线| 久久久久久97三级| 亚洲精品乱码久久久久久| 丝袜美腿亚洲综合| 国产成人福利片| 色呦呦网站一区| 欧美一区二区美女| 国产精品久久久久久久久图文区| 亚洲一区二区三区三| 久久成人免费日本黄色| 97久久人人超碰| 制服丝袜亚洲播放| 中文一区二区在线观看| 亚洲综合丝袜美腿| 国产精品一区三区| 欧美性感一类影片在线播放| 日韩欧美综合一区| 亚洲欧美色综合| 老司机免费视频一区二区三区| 成人h动漫精品一区二区| 欧美日本国产一区| 国产精品不卡一区| 蜜臀久久99精品久久久久久9| 波多野结衣亚洲| 日韩一级大片在线| 亚洲欧洲成人自拍| 久久精品99国产国产精| 色婷婷精品久久二区二区蜜臂av| 日韩一区二区在线观看| 亚洲欧美电影一区二区| 激情综合五月婷婷| 欧美亚洲高清一区二区三区不卡| 久久久久久麻豆| 日本女优在线视频一区二区| 91亚洲精品久久久蜜桃网站| 久久影院午夜片一区| 亚洲制服丝袜av| 国产xxx精品视频大全| 91精品国产aⅴ一区二区| 亚洲精品午夜久久久| 国产成人午夜视频| 欧美一级黄色录像| 亚洲成人你懂的| 91在线观看污| 国产蜜臀av在线一区二区三区| 日韩在线观看一区二区| 一本色道综合亚洲| 国产精品理论片| 国产精品影视在线| 欧美不卡在线视频| 日本视频一区二区三区| 欧美视频一区二区| 亚洲欧美一区二区三区极速播放| 国产黄人亚洲片| 久久一二三国产| 精品制服美女久久| 日韩一二三区视频| 日本中文字幕一区| 在线播放91灌醉迷j高跟美女 | 粉嫩一区二区三区在线看| 精品久久久网站| 免费观看久久久4p| 欧美精品视频www在线观看| 亚洲综合色成人| 欧美性感一区二区三区| 亚洲午夜激情av| 在线精品视频免费播放| 亚洲一区二区三区四区不卡| 欧美性生活影院| 亚洲午夜免费福利视频| 色屁屁一区二区| 一级特黄大欧美久久久| 欧美色区777第一页| 亚洲第一成年网| 7777精品伊人久久久大香线蕉经典版下载 | 精品在线播放午夜| 国产成人精品在线看| 欧美电影免费观看高清完整版| 日韩二区三区四区| 日韩欧美国产一区二区三区| 日本aⅴ免费视频一区二区三区 | 蜜臀久久99精品久久久久宅男| 日韩欧美电影一二三| 国精产品一区一区三区mba视频| 久久嫩草精品久久久精品| 国产91精品精华液一区二区三区 | 日韩丝袜情趣美女图片| 久久国产精品一区二区| 久久精品水蜜桃av综合天堂| 欧美三级日韩在线| 亚洲国产精品麻豆| 宅男在线国产精品| 国产精品综合网| 亚洲人xxxx| 91精品国产综合久久国产大片 | 热久久一区二区| 久久久国产午夜精品| 99久久免费精品| 同产精品九九九| 久久众筹精品私拍模特| 91在线观看免费视频| 日日夜夜免费精品| 久久人人爽人人爽| 91麻豆免费观看| 麻豆精品新av中文字幕| 中文字幕欧美日韩一区| 91久久精品国产91性色tv| 日本成人中文字幕在线视频| 国产欧美日韩在线| 欧美午夜一区二区| 国产精品一区二区在线观看网站| 成人欧美一区二区三区视频网页 | 国产尤物一区二区| 亚洲欧美激情一区二区| 日韩免费视频一区二区| 97久久精品人人做人人爽50路| 五月天久久比比资源色| 国产拍揄自揄精品视频麻豆| 欧美三级电影一区| 国产成人精品综合在线观看| 亚洲国产成人高清精品| 久久精品人人做人人综合| 欧美日韩国产经典色站一区二区三区| 国产精品综合网| 首页综合国产亚洲丝袜| 亚洲少妇中出一区| 精品精品国产高清一毛片一天堂| 91成人免费在线| 国产不卡视频一区二区三区| 性久久久久久久| 国产精品成人免费在线| 久久日一线二线三线suv| 欧美日韩高清一区二区三区| 国产成人超碰人人澡人人澡| 日本va欧美va精品发布|