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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? monitor.c

?? 嵌入式操作系統內核
?? C
字號:
/* -*- Mode: C; tab-width:4 -*- */
/* ex: set ts=4 shiftwidth=4 softtabstop=4 cindent: */
#include <sos_inttypes.h>
#include <monitor.h>
#include <sos_info.h>
#include <sos_sched.h>
#include <hardware_types.h>

//----------------------------------------------------------------------------
//  Typedefs
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//  Global data declarations
//----------------------------------------------------------------------------
static monitor_cb *cb_list;

//----------------------------------------------------------------------------
//  Funcation declarations
//----------------------------------------------------------------------------
int8_t monitor_init()
{
  cb_list = NULL;
  return SOS_OK;
}

int8_t ker_register_monitor(sos_pid_t pid, uint8_t type, monitor_cb *cb)
{
	cb->mod_handle = ker_get_module(pid);
	if(cb->mod_handle == NULL) return -ESRCH;
	cb->type = type;
	cb->next = NULL;
	if(cb_list == NULL) {
		/**
		 * Current list is empty
		 */
		cb_list = cb;
	} else {
		/**
		 * List is not empty, traverse the list to the end
		 * and add this new CB
		 */
		monitor_cb *curr = cb_list;
		while(curr->next != NULL){ curr = curr->next; }
		curr->next = cb;
	}
	return SOS_OK;
}

int8_t ker_deregister_monitor(monitor_cb *cb)
{
	monitor_cb *curr = cb_list;
	monitor_cb *prev = cb_list;
	while(curr) {
		if(curr == cb) {
			if(curr == prev) {
				/**
				 * Removing the head
				 */
				cb_list = curr->next;	
			} else {
				/**
				 * Removing non-head item in the list
				 */
				prev->next = curr->next;
			}
			return SOS_OK;
		}
		prev = curr;
		curr = curr->next;
	}
	return -EINVAL;
}

void monitor_deliver_incoming_msg_to_monitor(Message *m)
{
	uint8_t type;
	monitor_cb *curr;
#ifdef MSG_TRACE
#ifdef PC_PLATFORM
	msg_trace(m, false);
#endif
#endif
	if(cb_list == NULL) return;
	/**
	 * in SOS, incoming message can be both local and 
	 * from the network
	 */
	if(m->saddr == node_address) {
		/**
		 * local message
		 */
		type = MON_LOCAL;
	} else {
		/**
		 * from network
		 */
		type = MON_NET_INCOMING;
	}
	curr = cb_list;
	while(curr) {
		/**
		 * We only deliver the message if the destination is 
		 * not the monitor.  It does not make sense to 
		 * deliver the message twice
		 */
		if((curr->type & type) != 0 && 
			curr->mod_handle->pid != m->did) {
			msg_handler_t handler = 
				(msg_handler_t)sos_read_header_ptr(
							curr->mod_handle->header,
							offsetof(mod_header_t,module_handler));
			void *handler_state = curr->mod_handle->handler_state;
			handler(handler_state, m);
		}
		curr = curr->next;
	}
}

void monitor_deliver_outgoing_msg_to_monitor(Message *m)
{
	monitor_cb *curr;
#ifdef MSG_TRACE
#ifdef PC_PLATFORM
	msg_trace(m, true);
#endif
#endif
	if(cb_list == NULL) return;
	curr = cb_list;
	while(curr) {
		/**
		 * We only deliver the message if the source is not
		 * the monitor.  It does not make sense to deliver 
		 * the message sent by the monitor.
		 */
		if((curr->type & MON_NET_OUTGOING) != 0 &&
			curr->mod_handle->pid != m->sid) {
			msg_handler_t handler = 
				(msg_handler_t)sos_read_header_ptr(
							curr->mod_handle->header,
							offsetof(mod_header_t,module_handler));
			void *handler_state = curr->mod_handle->handler_state;
			handler(handler_state, m);
		}
		curr = curr->next;
	}
}

#ifdef PC_PLATFORM
static void print_mod_id(sos_pid_t pid)
{
	if(pid <= KER_MOD_MAX_PID) {
		DEBUG_SHORT("%s", ker_pid_name[pid]);
	} else if(pid >= APP_MOD_MIN_PID) {
		DEBUG_SHORT("%s", mod_pid_name[pid - APP_MOD_MIN_PID]); 
	} else {
		DEBUG_SHORT("unknown %d", pid);
	}
}

static void print_msg_name(uint8_t type)
{
	if(type < MOD_MSG_START) {
		DEBUG_SHORT("%s", ker_msg_name[type]);
	} else {
		DEBUG_SHORT("+%d", type - MOD_MSG_START);
	}
}

void msg_trace(Message *msg, bool out)
{
	if(out) {
		DEBUG_SHORT("<OUT>  ");
	} else {
		if(msg->saddr == node_address) {
			DEBUG_SHORT("<LOCAL>");
		} else {
			DEBUG_SHORT("<IN>   ");
		}
	}
	msg_print(msg);
}
void msg_print(Message *msg)
{
	DEBUG_SHORT(" < %d > ", msg->daddr);
	print_mod_id(msg->did);
	DEBUG_SHORT("   <--- ");
	print_msg_name(msg->type);
	DEBUG_SHORT("( %d ) ----   < %d > ", msg->len, msg->saddr);
	print_mod_id(msg->sid);
	DEBUG_SHORT("\n");
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品是欧美日韩精品| 精品欧美乱码久久久久久| 九九国产精品视频| 国产精品久久久久久福利一牛影视| 欧美日韩一本到| 成人av午夜影院| 奇米色777欧美一区二区| 一区二区三区四区激情| 精品国产一区久久| 欧美色偷偷大香| 北条麻妃一区二区三区| 久久av中文字幕片| 亚洲成人免费影院| 亚洲欧美偷拍三级| 国产亚洲一本大道中文在线| 日韩一二三区不卡| 欧美日韩国产电影| 色狠狠色狠狠综合| 99精品视频一区| 国产高清不卡一区| 韩国一区二区在线观看| 日本va欧美va精品发布| 亚洲一区二区三区四区在线观看 | 亚洲图片欧美激情| 久久久综合九色合综国产精品| 91精品中文字幕一区二区三区| 91久久精品一区二区三区| 懂色av一区二区三区免费看| 国模娜娜一区二区三区| 日韩激情av在线| 天涯成人国产亚洲精品一区av| 亚洲免费观看在线视频| **性色生活片久久毛片| 中文字幕欧美三区| 国产精品美女久久久久aⅴ国产馆| 国产亚洲综合在线| 国产三级精品三级在线专区| 久久日韩粉嫩一区二区三区| 欧美成人精品高清在线播放| 日韩三级视频中文字幕| 91精品国产综合久久久久久久久久 | 亚洲成av人**亚洲成av**| 亚洲精品免费电影| 亚洲精品videosex极品| 亚洲免费在线电影| 亚洲最大成人网4388xx| 一区二区免费看| 亚洲午夜电影在线| 日本成人在线电影网| 老司机一区二区| 国内精品久久久久影院薰衣草| 国产在线视视频有精品| 成人一区二区三区在线观看| 精品一区二区三区av| 国产一区二区三区免费观看| 国产精品影视天天线| 高清在线观看日韩| 99r国产精品| 欧美性极品少妇| 欧美日韩高清不卡| 日韩精品一区二区三区四区 | 麻豆精品视频在线观看免费| 久草热8精品视频在线观看| 国产精品亚洲第一区在线暖暖韩国| 国产精品69毛片高清亚洲| 99久久精品国产毛片| 欧美日韩久久久| www国产亚洲精品久久麻豆| 国产精品欧美一区喷水| 亚洲综合一区在线| 蜜臀av在线播放一区二区三区| 国产在线日韩欧美| 色综合久久久久综合| 欧美精品高清视频| 久久久噜噜噜久噜久久综合| 亚洲美女在线国产| 日本不卡一区二区三区| 国产盗摄一区二区三区| 在线精品亚洲一区二区不卡| 欧美一区二区三区免费大片| 国产欧美日韩麻豆91| 亚洲一区二区在线视频| 久久不见久久见免费视频7| 9i在线看片成人免费| 日韩一区二区精品| 亚洲欧美中日韩| 久久激五月天综合精品| av在线这里只有精品| 这里只有精品免费| 中文字幕中文字幕一区| 蜜臀av一级做a爰片久久| 成人av午夜电影| 精品区一区二区| 亚洲午夜一区二区三区| 国产成人啪午夜精品网站男同| 欧美酷刑日本凌虐凌虐| 国产精品久久看| 免费精品99久久国产综合精品| eeuss国产一区二区三区| 欧美一区二区大片| 亚洲激情图片一区| 国产福利精品一区二区| 欧美一区二区三区啪啪| 亚洲精品你懂的| 丰满放荡岳乱妇91ww| 日韩三级视频在线观看| 亚洲一区二区精品3399| 成人av先锋影音| 久久色成人在线| 蜜臀av一区二区在线免费观看| 色噜噜偷拍精品综合在线| 国产日韩欧美麻豆| 久久成人av少妇免费| 欧美老肥妇做.爰bbww视频| 亚洲色图20p| kk眼镜猥琐国模调教系列一区二区| 欧美精品一区二区在线播放| 男男视频亚洲欧美| 欧美日韩一二区| 亚洲午夜三级在线| 色天天综合色天天久久| 国产精品久久三区| www.久久久久久久久| 337p日本欧洲亚洲大胆精品| 美女视频黄a大片欧美| 欧美另类久久久品| 亚洲成人综合在线| 欧美私人免费视频| 亚洲国产中文字幕| 欧美亚洲高清一区二区三区不卡| 国产精品二三区| 成人国产精品免费观看动漫| 国产欧美日韩精品a在线观看| 激情文学综合网| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品影视av免费| 色综合咪咪久久| 一区二区三区自拍| 色天使色偷偷av一区二区| ...av二区三区久久精品| 色综合天天综合网天天看片| 有码一区二区三区| 在线欧美日韩精品| 亚洲一本大道在线| 在线播放91灌醉迷j高跟美女| 日日夜夜精品免费视频| 91精品在线免费| 麻豆精品一区二区三区| 精品99久久久久久| 国产成人亚洲综合a∨猫咪 | 日韩有码一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 亚洲综合精品自拍| 欧美精选在线播放| 精品一区二区三区免费| 2023国产精品| 99久久99久久精品国产片果冻| 最新国产の精品合集bt伙计| 欧美视频在线观看一区| 美女国产一区二区| 国产三级精品在线| 色av综合在线| 麻豆精品一区二区综合av| 国产亚洲va综合人人澡精品| av网站一区二区三区| 亚洲一区二区中文在线| 精品国产免费人成电影在线观看四季 | 奇米影视一区二区三区小说| 精品电影一区二区| 91网上在线视频| 日韩高清在线不卡| 欧美极品aⅴ影院| 欧美三级视频在线| 国产伦精一区二区三区| 亚洲免费av观看| 欧美一级一区二区| 不卡一区二区三区四区| 亚洲成a天堂v人片| 国产欧美综合色| 在线观看一区日韩| 国产综合色在线| 亚洲综合清纯丝袜自拍| 欧美大尺度电影在线| 99视频精品在线| 激情国产一区二区| 亚洲精品国产成人久久av盗摄| 日韩精品在线网站| 在线观看日韩电影| 国产suv一区二区三区88区| 亚洲国产aⅴ成人精品无吗| 久久久99久久精品欧美| 欧美亚洲愉拍一区二区| 国产电影精品久久禁18| 天天综合色天天| 亚洲欧美偷拍另类a∨色屁股| 欧美成人性福生活免费看| 欧美三区在线观看| 99re6这里只有精品视频在线观看| 日本成人在线一区| 亚洲第一搞黄网站|