⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syslog_mini.c

📁 符合日本著名的ITRON规范的开源操作系统。 TOPPERS/JSP内核就是TOPPERS工程按μITRON4.0研发的第一个 软件
💻 C
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000,2001 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *  Copyright (C) 2003-2004 by Ryosuke Takeuchi *              Platform Development Center RICOH COMPANY,LTD. JAPAN *  *  惧淡螟侯涪荚は·Free Software Foundation によって给山されている  *  GNU General Public License の Version 2 に淡揭されている掘凤か·笆 *  布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ *  アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ *      ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 *      に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· *      この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 *      み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ *    (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 *        涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する *        ことˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚を倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· *  塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ *  ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい *  かなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: syslog_mini.c,v 1.3 2005/11/24 12:41:23 honda Exp $ *//* *  システムログ怠墙词维惹 */#undef OMIT_SYSLOG#include "jsp_kernel.h"#include "time_event.h"#include "serial.h"/* *  叫蜗すべきログ攫鼠の脚妥刨∈ビットマップ∷ */static UINT	syslog_logmask;		/* 淡峡】叫蜗すべき脚妥刨 */static UINT	syslog_lowmask;		/* 你レベル叫蜗すべき脚妥刨 *//* *  システムログ怠墙の介袋步 */void syslog_initialize(void){	syslog_logmask = LOG_UPTO(LOG_NOTICE);	syslog_lowmask = LOG_UPTO(LOG_NOTICE);}/*  *  ログ攫鼠の叫蜗 */SYSCALL ERvwri_log(UINT prio, SYSLOG *p_log){	BOOL	locked;	p_log->logtim = systim_offset + current_time;	if ((syslog_logmask & LOG_MASK(prio)) != 0) {		/*	 	*  你レベル叫蜗への今叫し	 	*/		syslog_print(p_log, sys_putc);		sys_putc('\n');	}	return(E_OK);}/*  *  叫蜗すべきログ攫鼠の脚妥刨の肋年 */SYSCALL ERvmsk_log(UINT logmask, UINT lowmask){	syslog_logmask = logmask;	syslog_lowmask = lowmask;	return(E_OK);}/*  *  システムログ怠墙の姜位借妄 * *  ログバッファに淡峡されたログ攫鼠を·你レベル叫蜗怠墙を脱いて叫蜗す *  るˉ */voidsyslog_terminate(void){}/* *  眶猛を矢机误に恃垂 */static voidconvert(unsigned long val, int radix, const char *radchar, int width,		int minus, int padzero, void (*putc)(char)){	char	buf[12];	int	i, j;	i = 0;	do {		buf[i++] = radchar[val % radix];		val /= radix;	} while (val != 0);	width -= minus;	if (minus > 0 && padzero > 0) {		(*putc)('-');	}	for (j = i; j < width; j++) {		(*putc)((char)(padzero > 0 ? '0' : ' '));	}	if (minus > 0 && padzero <= 0) {		(*putc)('-');	}	while (i > 0) {		(*putc)(buf[--i]);	}}/* *  ログ攫鼠フォ〖マット脱ライブラリ簇眶 */static char const raddec[] = "0123456789";static char const radhex[] = "0123456789abcdef";static char const radHEX[] = "0123456789ABCDEF";voidsyslog_print(SYSLOG *p_syslog, void (*putc)(char)){	char const	*format;	int	argno;	int	c;	int	width;	int	padzero;	long	val;	char const	*str;	format = (char const *)(p_syslog->loginfo[0]);	argno = 1;	while ((c = *format++) != '\0') {		if (c != '%') {			(*putc)((char) c);			continue;		}		width = padzero = 0;		if ((c = *format++) == '0') {			padzero = 1;			c = *format++;		}		while ('0' <= c && c <= '9') {			width = width*10 + c - '0';			c = *format++;		}		switch (c) {		case 'd':			val = (long)(p_syslog->loginfo[argno++]);			if (val >= 0) {				convert(val, 10, raddec, width,						0, padzero, putc);			}			else {				convert(-val, 10, raddec, width,						1, padzero, putc);			}			break;		case 'u':			val = (long)(p_syslog->loginfo[argno++]);			convert(val, 10, raddec, width, 0, padzero, putc);			break;		case 'x':			val = (long)(p_syslog->loginfo[argno++]);			convert(val, 16, radhex, width, 0, padzero, putc);			break;		case 'X':			val = (long)(p_syslog->loginfo[argno++]);			convert(val, 16, radHEX, width, 0, padzero, putc);			break;		case 'c':			(*putc)((char)(int)(p_syslog->loginfo[argno++]));			break;		case 's':			str = (char const *)(p_syslog->loginfo[argno++]);			while ((c = *str++) != '\0') {				(*putc)((char) c);			}			break;		case '%':			(*putc)('%');			break;		case '\0':			format--;			break;		default:			break;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -