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

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

?? klogd.c

?? linux下記錄系統(tǒng)日志代碼以及記錄內(nèi)核日志代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	if ( sig == SIGUSR2 )	{		++reload_symbols;		signal(SIGUSR2, reload_daemon);	}	else		signal(SIGUSR1, reload_daemon);			return;}static void Terminate(){	CloseLogSrc();	Syslog(LOG_INFO, "Kernel log daemon terminating.");	sleep(1);	if ( output_file != (FILE *) 0 )		fclose(output_file);	closelog();#ifndef TESTING	(void) remove_pid(PidFile);#endif	exit(1);}static void SignalDaemon(sig)     int sig;{#ifndef TESTING	auto int pid = check_pid(PidFile);	kill(pid, sig);#else	kill(getpid(), sig);#endif	return;}static void ReloadSymbols(){	if (symbol_lookup) {		if ( reload_symbols > 1 )			InitKsyms(symfile);		InitMsyms();	}	reload_symbols = change_state = 0;	return;}static void ChangeLogging(void){	/* Terminate kernel logging. */	if ( terminate == 1 )		Terminate();	/* Indicate that something is happening. */	Syslog(LOG_INFO, "klogd %s.%s, ---------- state change ----------\n", \	       VERSION, PATCHLEVEL);	/* Reload symbols. */	if ( reload_symbols > 0 )	{		ReloadSymbols();		return;	}	/* Stop kernel logging. */	if ( caught_TSTP == 1 )	{		CloseLogSrc();		logsrc = none;		change_state = 0;		return;	}			/*	 * The rest of this function is responsible for restarting	 * kernel logging after it was stopped.	 *	 * In the following section we make a decision based on the	 * kernel log state as to what is causing us to restart.  Somewhat	 * groady but it keeps us from creating another static variable.	 */	if ( logsrc != none )	{		Syslog(LOG_INFO, "Kernel logging re-started after SIGSTOP.");		change_state = 0;		return;	}	/* Restart logging. */	logsrc = GetKernelLogSrc();	change_state = 0;	return;}static enum LOGSRC GetKernelLogSrc(void){	auto struct stat sb;	/* Set level of kernel console messaging.. */	if ( (console_log_level != -1)	&& (ksyslog(8, NULL, console_log_level) < 0) && \	     (errno == EINVAL) )	{		/*		 * An invalid arguement error probably indicates that		 * a pre-0.14 kernel is being run.  At this point we		 * issue an error message and simply shut-off console		 * logging completely.		 */		Syslog(LOG_WARNING, "Cannot set console log level - disabling "		       "console output.");		ksyslog(6, NULL, 0);	}	/*	 * First do a stat to determine whether or not the proc based	 * file system is available to get kernel messages from.	 */	if ( use_syscall ||	    ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT)) )	{	  	/* Initialize kernel logging. */	  	ksyslog(1, NULL, 0);#ifdef DEBRELEASE		Syslog(LOG_INFO, "klogd %s.%s#%s, log source = ksyslog "		       "started.", VERSION, PATCHLEVEL, DEBRELEASE);#else		Syslog(LOG_INFO, "klogd %s.%s, log source = ksyslog "		       "started.", VERSION, PATCHLEVEL);#endif		return(kernel);	}#ifndef TESTING	if ( (kmsg = open(_PATH_KLOG, O_RDONLY)) < 0 )	{		fprintf(stderr, "klogd: Cannot open proc file system, " \			"%d - %s.\n", errno, strerror(errno));		ksyslog(7, NULL, 0);		exit(1);	}#else	kmsg = fileno(stdin);#endif#ifdef DEBRELEASE	Syslog(LOG_INFO, "klogd %s.%s#%s, log source = %s started.", \	       VERSION, PATCHLEVEL, DEBRELEASE, _PATH_KLOG);#else	Syslog(LOG_INFO, "klogd %s.%s, log source = %s started.", \	       VERSION, PATCHLEVEL, _PATH_KLOG);#endif	return(proc);}extern void Syslog(int priority, char *fmt, ...){	va_list ap;	char *argl;	if ( debugging )	{		fputs("Logging line:\n", stderr);		fprintf(stderr, "\tLine: %s\n", fmt);		fprintf(stderr, "\tPriority: %d\n", priority);	}	/* Handle output to a file. */	if ( output_file != (FILE *) 0 )	{		va_start(ap, fmt);		vfprintf(output_file, fmt, ap);		va_end(ap);		fputc('\n', output_file);		fflush(output_file);		if (!one_shot)			fsync(fileno(output_file));		return;	}		/* Output using syslog. */	if (!strcmp(fmt, "%s"))	{		va_start(ap, fmt);		argl = va_arg(ap, char *);		if (argl[0] == '<' && argl[1] && argl[2] == '>')		{			switch ( argl[1] )			{			case '0':				priority = LOG_EMERG;				break;			case '1':				priority = LOG_ALERT;				break;			case '2':				priority = LOG_CRIT;				break;			case '3':				priority = LOG_ERR;				break;			case '4':				priority = LOG_WARNING;				break;			case '5':				priority = LOG_NOTICE;				break;			case '6':				priority = LOG_INFO;				break;			case '7':			default:				priority = LOG_DEBUG;			}			argl += 3;		}		syslog(priority, fmt, argl);		va_end(ap);#ifdef TESTING		putchar('\n');#endif		return;	}	va_start(ap, fmt);	vsyslog(priority, fmt, ap);	va_end(ap);#ifdef TESTING	printf ("\n");#endif	return;}/* *     Copy characters from ptr to line until a char in the delim *     string is encountered or until min( space, len ) chars have *     been copied. * *     Returns the actual number of chars copied. */static int copyin( char *line,      int space,                   const char *ptr, int len,                   const char *delim ){    auto int i;    auto int count;    count = len < space ? len : space;    for(i=0; i<count && !strchr(delim, *ptr); i++ ) { *line++ = *ptr++; }    return( i );}/* * Messages are separated by "\n".  Messages longer than * LOG_LINE_LENGTH are broken up. * * Kernel symbols show up in the input buffer as : "[<aaaaaa>]", * where "aaaaaa" is the address.  These are replaced with * "[symbolname+offset/size]" in the output line - symbolname, * offset, and size come from the kernel symbol table. * * If a kernel symbol happens to fall at the end of a message close * in length to LOG_LINE_LENGTH, the symbol will not be expanded. * (This should never happen, since the kernel should never generate * messages that long. * * To preserve the original addresses, lines containing kernel symbols * are output twice.  Once with the symbols converted and again with the * original text.  Just in case somebody wants to run their own Oops * analysis on the syslog, e.g. ksymoops. */static void LogLine(char *ptr, int len){    enum parse_state_enum {        PARSING_TEXT,        PARSING_SYMSTART,      /* at < */        PARSING_SYMBOL,                PARSING_SYMEND         /* at ] */    };    static char line_buff[LOG_LINE_LENGTH];    static char *line                        =line_buff;    static enum parse_state_enum parse_state = PARSING_TEXT;    static int space                         = sizeof(line_buff)-1;    static char *sym_start;            /* points at the '<' of a symbol */    auto   int delta = 0;              /* number of chars copied        */    auto   int symbols_expanded = 0;   /* 1 if symbols were expanded */    auto   int skip_symbol_lookup = 0; /* skip symbol lookup on this pass */    auto   char *save_ptr = ptr;       /* save start of input line */    auto   int save_len = len;         /* save length at start of input line */    while( len > 0 )    {        if( space == 0 )    /* line buffer is full */        {            /*            ** Line too long.  Start a new line.            */            *line = 0;   /* force null terminator */	    if ( debugging )	    {		fputs("Line buffer full:\n", stderr);		fprintf(stderr, "\tLine: %s\n", line);	    }            Syslog( LOG_INFO, "%s", line_buff );            line  = line_buff;            space = sizeof(line_buff)-1;            parse_state = PARSING_TEXT;	    symbols_expanded = 0;	    skip_symbol_lookup = 0;	    save_ptr = ptr;	    save_len = len;        }        switch( parse_state )        {        case PARSING_TEXT:               delta = copyin( line, space, ptr, len, "\n[%" );               line  += delta;               ptr   += delta;               space -= delta;               len   -= delta;               if( space == 0 || len == 0 )               {		  break;  /* full line_buff or end of input buffer */               }               if( *ptr == '\0' )  /* zero byte */               {                  ptr++;	/* skip zero byte */                  space -= 1;                  len   -= 1;		  break;	       }               if( *ptr == '\n' )  /* newline */               {                  ptr++;	/* skip newline */                  space -= 1;                  len   -= 1;                  *line = 0;  /* force null terminator */	          Syslog( LOG_INFO, "%s", line_buff );                  line  = line_buff;                  space = sizeof(line_buff)-1;		  if (symbols_twice) {		      if (symbols_expanded) {			  /* reprint this line without symbol lookup */			  symbols_expanded = 0;			  skip_symbol_lookup = 1;			  ptr = save_ptr;			  len = save_len;		      }		      else		      {			  skip_symbol_lookup = 0;			  save_ptr = ptr;			  save_len = len;		      }		  }                  break;               }               if( *ptr == '[' )   /* possible kernel symbol */               {                  *line++ = *ptr++;                  space -= 1;                  len   -= 1;	          if (!skip_symbol_lookup)                     parse_state = PARSING_SYMSTART;      /* at < */                  break;               }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级三级三级| 精品裸体舞一区二区三区| 久久99国产精品免费网站| 亚洲人成精品久久久久久| 精品国产sm最大网站| 欧美午夜不卡在线观看免费| 国产成人a级片| 奇米影视一区二区三区| 亚洲激情欧美激情| 国产精品污污网站在线观看| 日韩亚洲欧美在线| 欧美色成人综合| 91年精品国产| 国产99久久久国产精品潘金网站| 性做久久久久久免费观看欧美| 欧美精彩视频一区二区三区| 日韩免费观看高清完整版| 欧美图区在线视频| 91久久精品日日躁夜夜躁欧美| 国产精品一品视频| 狠狠色丁香九九婷婷综合五月| 亚洲福利国产精品| 亚洲一区二区三区小说| 亚洲欧美激情小说另类| 中文字幕一区免费在线观看| 国产精品美女久久久久久2018 | 国产成人在线观看免费网站| 丝袜美腿亚洲综合| 亚洲一区二区三区在线看| 亚洲三级视频在线观看| 亚洲欧洲色图综合| 亚洲欧洲成人精品av97| 中文字幕欧美日本乱码一线二线 | 国产精品沙发午睡系列990531| 26uuu精品一区二区在线观看| 日韩亚洲欧美在线| 精品毛片乱码1区2区3区| 欧美精品一区在线观看| 精品88久久久久88久久久| 欧美va亚洲va| 欧美国产综合色视频| 久久精品亚洲一区二区三区浴池| 国产婷婷色一区二区三区在线| 26uuu国产电影一区二区| 久久麻豆一区二区| 国产日韩欧美电影| 日韩毛片高清在线播放| 亚洲日韩欧美一区二区在线| 亚洲精品久久7777| 亚洲午夜一区二区| 日韩高清欧美激情| 久久精品99国产精品日本| 国产综合色产在线精品| 国产成人综合亚洲网站| 色综合久久精品| 欧美久久一区二区| 欧美va亚洲va香蕉在线| 国产农村妇女毛片精品久久麻豆| 中文字幕在线不卡国产视频| 一区二区三区视频在线看| 天堂久久一区二区三区| 麻豆91在线观看| 岛国av在线一区| 欧美性猛交xxxxxx富婆| 日韩精品一区在线观看| 国产女人18水真多18精品一级做| 亚洲欧美色一区| 青青草原综合久久大伊人精品优势| 另类小说图片综合网| 国产精品一二三区| 在线观看不卡视频| 日韩精品一区国产麻豆| 国产精品久久午夜夜伦鲁鲁| 一区二区国产盗摄色噜噜| 国产精品羞羞答答xxdd| 成人免费视频caoporn| 老司机免费视频一区二区三区| 久久综合综合久久综合| 国产91精品一区二区麻豆亚洲| 久久国产精品无码网站| 国产精品亚洲成人| 欧美午夜一区二区| 亚洲天堂精品视频| 国产成人在线视频播放| 欧美午夜在线观看| 26uuu成人网一区二区三区| 国产精品三级av| 奇米精品一区二区三区在线观看| 粉嫩av一区二区三区粉嫩| 欧美日韩精品一区二区三区蜜桃 | 91丨porny丨户外露出| 5566中文字幕一区二区电影 | 午夜久久久久久久久久一区二区| 久草精品在线观看| 91黄色免费观看| 久久嫩草精品久久久精品| 亚洲国产精品人人做人人爽| 国产电影一区在线| 欧美男男青年gay1069videost| 精品粉嫩aⅴ一区二区三区四区| 成人免费在线播放视频| 国产在线精品一区二区三区不卡 | 亚洲综合视频在线| 韩国女主播一区| 欧美美女视频在线观看| 国产精品另类一区| 久久国产欧美日韩精品| 欧美日韩精品一区二区在线播放| 国产精品乱码妇女bbbb| 国产美女娇喘av呻吟久久| 7777女厕盗摄久久久| 亚洲视频一区在线观看| 国产精品一区二区黑丝| 日韩一级片在线观看| 一区二区三区免费在线观看| 国产成人亚洲精品狼色在线 | 国产清纯白嫩初高生在线观看91| 丝袜亚洲精品中文字幕一区| 欧美制服丝袜第一页| 1区2区3区欧美| 成人福利视频在线| 国产亚洲欧美一级| 美女脱光内衣内裤视频久久影院| 欧美午夜电影网| 亚洲一区二区欧美激情| 日本高清视频一区二区| 亚洲视频 欧洲视频| 99这里只有久久精品视频| 国产欧美在线观看一区| 激情久久五月天| 日韩欧美在线不卡| 美女在线视频一区| 欧美一区二区在线免费播放| 午夜久久久久久久久| 欧美性生交片4| 亚洲国产你懂的| 欧美日韩亚洲不卡| 日韩av在线发布| 91.麻豆视频| 美女视频黄频大全不卡视频在线播放| 欧美福利视频导航| 麻豆国产精品一区二区三区| 日韩欧美激情四射| 国产一区二区毛片| 国产无人区一区二区三区| 成人av在线网| 一区二区三区精密机械公司| 91国偷自产一区二区使用方法| 亚洲精品免费在线播放| 精品视频在线免费观看| 奇米色一区二区| 久久青草国产手机看片福利盒子 | 蜜臀av国产精品久久久久| 日韩视频一区二区在线观看| 蜜臀av一区二区在线免费观看| 亚洲精品一区二区三区香蕉| 国产高清精品久久久久| 亚洲欧美一区二区三区孕妇| 欧美日本国产视频| 久久精品国产999大香线蕉| 久久久久成人黄色影片| 成人自拍视频在线| 一区二区三区欧美亚洲| 51精品国自产在线| 国产在线视视频有精品| 国产精品伦理在线| 欧美日韩免费高清一区色橹橹 | 欧美色电影在线| 精品中文字幕一区二区小辣椒| 国产午夜亚洲精品午夜鲁丝片| av动漫一区二区| 天涯成人国产亚洲精品一区av| 久久综合国产精品| 91在线小视频| 蜜臀久久99精品久久久画质超高清| 久久精品一区二区三区av| 一道本成人在线| 男女男精品视频| 国产精品美女久久久久av爽李琼| 在线精品视频免费播放| 美女脱光内衣内裤视频久久影院| 欧美激情综合五月色丁香小说| 日本乱人伦aⅴ精品| 久久精品72免费观看| 1区2区3区精品视频| 日韩欧美电影一二三| 91理论电影在线观看| 久久99精品视频| 一区二区三区精密机械公司| 久久久精品国产99久久精品芒果 | 蜜臀久久99精品久久久久宅男 | 制服丝袜在线91| av亚洲精华国产精华| 免费av网站大全久久| 亚洲欧美日韩久久精品| 久久精品夜夜夜夜久久| 日韩一区二区三区精品视频 | 欧美亚洲日本国产| 国产成人日日夜夜| 肉丝袜脚交视频一区二区|