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

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

?? daemon.c

?? 一個Windows下的Linux專用虛擬機
?? C
?? 第 1 頁 / 共 2 頁
字號:
out:	return rc;}void co_daemon_monitor_destroy(co_daemon_t *daemon){	co_user_monitor_close(daemon->monitor);	daemon->monitor = NULL;}co_rc_t co_daemon_start_monitor(co_daemon_t *daemon){	co_rc_t rc;	unsigned long size;	co_manager_ioctl_status_t status;	rc = co_os_file_load(daemon->config.vmlinux_path, &daemon->buf, &size, 0);	if (!CO_OK(rc)) {		co_terminal_print("error loading vmlinux file\n");		goto out;	}	rc = co_elf_image_read(&daemon->elf_data, daemon->buf, size);	if (!CO_OK(rc)) {		co_terminal_print("error reading image (%ld bytes)\n", size);		goto out_free_vmlinux; 	}	co_debug("creating monitor");	rc = co_daemon_monitor_create(daemon);	if (!CO_OK(rc)) {		co_debug_error("error initializing");		goto out_free_vmlinux;	}	// Don't start, if API_VERSION mismatch	rc = co_manager_status(daemon->monitor->handle, &status);	if (!CO_OK(rc))		goto out_destroy;	rc = co_elf_image_load(daemon);	if (!CO_OK(rc)) {		co_terminal_print("error loading image\n");		goto out_destroy;	}	return rc;out_destroy:	co_daemon_monitor_destroy(daemon);out_free_vmlinux:	co_os_file_free(daemon->buf);out:	return rc;}void co_daemon_send_shutdown(co_daemon_t *daemon){	struct {		co_message_t message;		co_linux_message_t linux_msg;		co_linux_message_power_t data;	} message;	daemon->next_reboot_will_shutdown = PTRUE;	co_terminal_print_color(CO_TERM_COLOR_YELLOW, "colinux: Linux VM goes shutdown, please wait!\n");	message.message.from = CO_MODULE_DAEMON;	message.message.to = CO_MODULE_LINUX;	message.message.priority = CO_PRIORITY_IMPORTANT;	message.message.type = CO_MESSAGE_TYPE_OTHER;	message.message.size = sizeof(message.linux_msg) + sizeof(message.data);	message.linux_msg.device = CO_DEVICE_POWER;	message.linux_msg.unit = 0;	message.linux_msg.size = sizeof(message.data);	message.data.type = CO_LINUX_MESSAGE_POWER_SHUTDOWN;	co_user_monitor_message_send(daemon->message_monitor, &message.message);}co_rc_t co_daemon_handle_printk(co_daemon_t *daemon, co_message_t *message){	if (message->type == CO_MESSAGE_TYPE_STRING) {		char *string_start = (char *)message->data;               		if (string_start[0] == '<'  &&  		    string_start[1] >= '0'  &&  string_start[1] <= '9'  &&		    string_start[2] == '>')		{			string_start += 3;		}		if (!daemon->start_parameters->suppress_printk) {			co_terminal_print_color(CO_TERM_COLOR_WHITE, 						"%s", string_start);		}		if (co_strstr(string_start, "VFS: Unable to mount root fs on")) {			co_terminal_print_color(CO_TERM_COLOR_YELLOW, 						"colinux: kernel panic suggests that either you forget to supply a\n");			co_terminal_print_color(CO_TERM_COLOR_YELLOW, 						"root= kernel boot paramter or the file / device mapped to the root\n");			co_terminal_print_color(CO_TERM_COLOR_YELLOW, 						"file system is not found or inaccessible.\n");			co_terminal_print_color(CO_TERM_COLOR_YELLOW, 						"Please Check your coLinux configuration and use option \"-v 3\".\n");		}	}	return CO_RC(OK);}static co_rc_t message_receive(co_reactor_user_t user, unsigned char *buffer, unsigned long size){	co_message_t *message;	unsigned long message_size;	long size_left = size;	long position = 0;	co_daemon_t *daemon = (typeof(daemon))(user->private_data);	while (size_left > 0) {		message = (typeof(message))(&buffer[position]);		message_size = message->size + sizeof(*message);		size_left -= message_size;		if (size_left >= 0) {			switch(message->to) {			case CO_MODULE_PRINTK:				co_daemon_handle_printk(daemon, message);			default:				break;			}		}		position += message_size;	}	return CO_RC(OK);}co_rc_t co_daemon_launch_net_daemons(co_daemon_t *daemon){	int i;	co_rc_t rc;	for (i=0; i < CO_MODULE_MAX_CONET; i++) { 		co_netdev_desc_t *net_dev;		char interface_name[CO_NETDEV_DESC_STR_SIZE + 0x10] = {0, };		net_dev = &daemon->config.net_devs[i];		if (net_dev->enabled == PFALSE)			continue;		co_debug("launching daemon for conet%d", i);		if (*net_dev->desc != 0)			co_snprintf(interface_name, sizeof(interface_name), "-n \"%s\"", net_dev->desc);		switch (net_dev->type) 		{		case CO_NETDEV_TYPE_BRIDGED_PCAP: {			char mac_address[18];			co_build_mac_address(mac_address, sizeof(mac_address), net_dev->mac_address);			rc = co_launch_process(NULL, "colinux-bridged-net-daemon -i %d -u %d %s -mac %s -p %d",					daemon->id, i, interface_name, mac_address, net_dev->promisc_mode);			break;		}		case CO_NETDEV_TYPE_TAP: {			rc = co_launch_process(NULL, "colinux-net-daemon -i %d -u %d %s", daemon->id, i, interface_name);			break;		}		case CO_NETDEV_TYPE_SLIRP: {			rc = co_launch_process(NULL, "colinux-slirp-net-daemon -i %d -u %d%s%s",				daemon->id, i, (*net_dev->redir)?" -r ":"", net_dev->redir);			break;		}		default:			rc = CO_RC(ERROR);			break;		}		if (!CO_OK(rc))			co_terminal_print("WARNING: error launching network daemon!\n");	}	return CO_RC(OK);}static co_rc_t co_daemon_launch_serial_daemons(co_daemon_t *daemon){	int i;	co_rc_t rc;	co_serialdev_desc_t *serial;	for (i = 0, serial = daemon->config.serial_devs; i < CO_MODULE_MAX_SERIAL; i++, serial++) {		char mode_param[CO_SERIAL_MODE_STR_SIZE + 10] = {0, };		if (serial->enabled == PFALSE)			continue;		co_debug("launching daemon for ttys%d", i);		if (serial->mode)			co_snprintf(mode_param, sizeof(mode_param), " -m \"%s\"", serial->mode);		rc = co_launch_process(NULL, "colinux-serial-daemon -i %d -u %d -f %s%s",			    daemon->id, i,			    serial->desc,	/* -f COM1 */			    mode_param);	/* -m 9600,n,8,2 */		if (!CO_OK(rc))			co_terminal_print("WARNING: error launching serial daemon!\n");	}	return CO_RC(OK);}static co_rc_t co_daemon_launch_executes(co_daemon_t *daemon){	int i;	co_rc_t rc;	co_execute_desc_t *execute;	for (i = 0, execute = daemon->config.executes; i < CO_MODULE_MAX_EXECUTE; i++, execute++) {		if (execute->enabled == PFALSE)			continue;		co_debug("launching exec%d", i);		rc = co_launch_process(&execute->pid,				(execute->args) ? "%s %s" : "%s",				execute->prog, execute->args);		if (!CO_OK(rc))			co_terminal_print("WARNING: error launching exec%d '%s'!\n", i, execute->prog);	}	return CO_RC(OK);}static co_rc_t co_daemon_kill_executes(co_daemon_t *daemon){	int i;	co_rc_t rc;	co_execute_desc_t *execute;	for (i = 0, execute = daemon->config.executes; i < CO_MODULE_MAX_EXECUTE; i++, execute++) {		if (execute->enabled == PFALSE || execute->pid == 0)			continue;		co_debug("killing exec%d", i);		rc = co_kill_process(execute->pid);		if (!CO_OK(rc))			co_terminal_print("WARNING: error killing '%s'!\n", execute->prog);		execute->pid = 0;	}	return CO_RC(OK);}static co_rc_t co_daemon_restart(co_daemon_t *daemon){	co_rc_t rc = co_user_monitor_reset(daemon->monitor);	if (!CO_OK(rc)) {		co_terminal_print("colinux: reset unsuccessful\n");		return rc;	}	rc = co_elf_image_load(daemon);	if (!CO_OK(rc)) {		co_terminal_print("colinux: error reloading vmlinux\n");		return rc;	}	rc = co_load_initrd(daemon);	if (!CO_OK(rc)) {		co_terminal_print("colinux: error reloading initrd\n");		return rc;	}	return rc;}co_rc_t co_daemon_run(co_daemon_t *daemon){	co_rc_t rc;	co_reactor_t reactor;	co_module_t modules[] = {CO_MODULE_PRINTK, };	bool_t restarting = PFALSE;	co_start_parameters_t *start_parameters = daemon->start_parameters;	rc = co_reactor_create(&reactor);	if (!CO_OK(rc))		return rc;	co_terminal_print("PID: %d\n", (int)daemon->id);	rc = co_user_monitor_open(reactor, message_receive,				  daemon->id, modules, sizeof(modules)/sizeof(co_module_t),				  &daemon->message_monitor);	if (!CO_OK(rc))		goto out;	daemon->message_monitor->reactor_user->private_data = (void *)daemon;	if (start_parameters->pidfile_specified) {		char buf[32];		int size;		size = co_snprintf(buf, sizeof(buf), "%d\n", (int)daemon->id);		rc = co_os_file_write(start_parameters->pidfile, buf, size);		if (!CO_OK(rc)) {			co_terminal_print("colinux: error creating PID file '%s'\n", start_parameters->pidfile);			return rc;		}	}	if (start_parameters->launch_console) {		co_debug_info("colinux: launching console");		rc = co_launch_process(NULL, "colinux-console-%s -a %d", start_parameters->console, daemon->id);		if (!CO_OK(rc)) {			co_terminal_print("error launching console\n");			goto out;		}	}	rc = co_daemon_launch_net_daemons(daemon);	if (!CO_OK(rc)) {		co_terminal_print("error launching network daemons\n");		goto out;	}	rc = co_daemon_launch_serial_daemons(daemon);	if (!CO_OK(rc))		goto out;	rc = co_daemon_launch_executes(daemon);	if (!CO_OK(rc))		goto out;	co_terminal_print("colinux: booting\n");	daemon->next_reboot_will_shutdown = PFALSE;	do {		restarting = PFALSE;		rc = co_user_monitor_start(daemon->monitor);		if (!CO_OK(rc))			goto out;				daemon->running = PTRUE;		while (daemon->running) {			co_monitor_ioctl_run_t params;			rc = co_user_monitor_run(daemon->monitor, &params);			if (!CO_OK(rc))				break;			co_reactor_select(reactor, 0);		}		if (CO_RC_GET_CODE(rc) == CO_RC_INSTANCE_TERMINATED) {			co_monitor_ioctl_get_state_t params;			co_termination_reason_t reason;			co_terminal_print("colinux: Linux VM terminated\n");			rc = co_user_monitor_get_state(daemon->monitor, &params);			if (!CO_OK(rc)) {				co_terminal_print("colinux: unable to get reason for termination (bug?), aborting\n");				break;			}			reason = params.termination_reason;			switch (reason) {			case CO_TERMINATE_REBOOT:				if (daemon->next_reboot_will_shutdown) {					co_terminal_print("colinux: shutting down after reboot.\n");					break;				}				co_terminal_print("colinux: rebooted.\n");				rc = co_daemon_restart(daemon);				if (CO_OK(rc))					restarting = PTRUE;				break;			case CO_TERMINATE_POWEROFF:				co_terminal_print("colinux: powered off, exiting.\n");				break;			case CO_TERMINATE_HALT:				co_terminal_print("colinux: halted, exiting.\n");				break;			case CO_TERMINATE_BUG:				co_terminal_print("colinux: BUG at %s:%ld\n", params.bug_info.file, params.bug_info.line);				break;			default:				co_terminal_print("colinux: terminated with code %d - abnormal exit, aborting\n", reason);				break;			}		}	} while (restarting);	co_daemon_kill_executes(daemon);	co_user_monitor_close(daemon->message_monitor);out:	if (start_parameters->pidfile_specified) {		co_rc_t rc1;		rc1 = co_os_file_unlink(start_parameters->pidfile);		if (!CO_OK(rc1))			co_debug("error removing PID file '%s'", start_parameters->pidfile);	}	co_reactor_destroy(reactor);	return rc;}void co_daemon_end_monitor(co_daemon_t *daemon){	co_debug("shutting down");	co_daemon_monitor_destroy(daemon);	co_os_file_free(daemon->buf);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品你懂的| 日韩电影免费一区| 久久女同互慰一区二区三区| 3d动漫精品啪啪1区2区免费 | 欧美久久久久久蜜桃| 成人激情小说乱人伦| 成人免费看片app下载| 欧美不卡一区二区三区四区| 欧美专区亚洲专区| 欧美熟乱第一页| 久久精品亚洲国产奇米99| 国产日本一区二区| 日本一区二区三区四区| 亚洲男人电影天堂| 日韩精品久久理论片| 国产在线播放一区三区四| 国产综合色精品一区二区三区| 韩国欧美国产一区| www.亚洲人| 欧美日韩亚洲综合在线| 日韩女同互慰一区二区| 久久久久国色av免费看影院| 国产精品日产欧美久久久久| 亚洲国产一区二区三区| 美国三级日本三级久久99| 国产精品亚洲专一区二区三区| av亚洲产国偷v产偷v自拍| 欧美视频在线播放| 欧美大黄免费观看| 亚洲欧美在线视频观看| 日韩精品久久久久久| 国产91清纯白嫩初高中在线观看| 色综合一区二区| 日韩午夜激情免费电影| 亚洲人成网站色在线观看| 麻豆精品新av中文字幕| 99久久精品久久久久久清纯| 欧美一区二区三区精品| 成人免费小视频| 久久精品国产亚洲aⅴ| 91色在线porny| 精品国产91洋老外米糕| 亚洲国产一区二区在线播放| 国产成人午夜片在线观看高清观看| 一本到高清视频免费精品| 日韩欧美亚洲国产精品字幕久久久| 亚洲欧洲精品成人久久奇米网| 日韩高清一区在线| 99国产精品久久久久久久久久 | 欧美电视剧在线看免费| 亚洲综合色自拍一区| www.av精品| 精品国产一区二区精华| 亚洲国产精品自拍| 91亚洲男人天堂| 国产欧美一区视频| 美女精品一区二区| 777亚洲妇女| 亚洲资源中文字幕| 色婷婷亚洲婷婷| 中文字幕一区二区三区在线不卡| 韩国三级在线一区| 精品人在线二区三区| 天堂成人国产精品一区| 欧美性一二三区| 亚洲美女在线国产| 91免费在线播放| 国产精品不卡一区| 99久久精品免费看国产| 国产精品进线69影院| www.欧美.com| 成人欧美一区二区三区视频网页 | 天天操天天干天天综合网| 91麻豆精东视频| 一区在线观看免费| 一本久道久久综合中文字幕 | 91麻豆国产精品久久| 国产精品天天摸av网| 国产精品77777竹菊影视小说| 精品国产乱码久久久久久图片 | 亚洲最色的网站| 在线精品国精品国产尤物884a| 亚洲精品成a人| 91国产视频在线观看| 亚洲一区二区av电影| 欧美欧美午夜aⅴ在线观看| 午夜亚洲国产au精品一区二区| 欧美日韩激情在线| 日韩精品五月天| 久久婷婷一区二区三区| 成人免费视频网站在线观看| 成人欧美一区二区三区黑人麻豆| 91高清视频在线| 日韩中文字幕麻豆| 久久伊99综合婷婷久久伊| 成人av免费在线观看| 亚洲免费在线看| 欧美一区二区大片| 国产91对白在线观看九色| 亚洲人成网站影音先锋播放| 欧美日韩电影在线| 国产毛片一区二区| 亚洲免费av高清| 日韩视频中午一区| av中文字幕一区| 午夜激情久久久| 久久久久99精品一区| 日本国产一区二区| 久久精品久久综合| 亚洲免费看黄网站| 久久综合精品国产一区二区三区| av电影一区二区| 免费视频一区二区| 亚洲欧洲韩国日本视频| 精品日本一线二线三线不卡| 色狠狠综合天天综合综合| 狠狠色综合播放一区二区| 亚洲欧美偷拍卡通变态| 欧美日韩国产综合久久| 日本中文字幕一区二区有限公司| 国产午夜精品理论片a级大结局 | 久久99精品久久久久久国产越南| 国产精品理论在线观看| 精品国免费一区二区三区| 91在线观看高清| 黄色精品一二区| 午夜精品一区二区三区三上悠亚 | 不卡一区二区在线| 麻豆精品一区二区av白丝在线 | 欧美一区二区久久久| 色哟哟日韩精品| 不卡影院免费观看| 国产精品 欧美精品| 日韩和欧美一区二区| 亚洲日本乱码在线观看| 久久久久亚洲综合| 欧美成人在线直播| 日韩一区二区电影网| 欧美视频日韩视频| 一本大道久久a久久综合婷婷| 国产成人高清在线| 激情综合网最新| 久久国产精品免费| 日本va欧美va瓶| 婷婷久久综合九色国产成人| 亚洲一区二区三区在线播放| 日韩毛片精品高清免费| 成人免费在线视频| 亚洲人成7777| 一区二区三区在线免费视频| 自拍偷拍欧美激情| 综合欧美一区二区三区| 国产精品视频一二三区 | 成人免费毛片aaaaa**| 成人妖精视频yjsp地址| 国产精品99久久久久| 成人永久免费视频| av亚洲产国偷v产偷v自拍| 99久久精品国产导航| 色综合中文字幕国产 | 91麻豆福利精品推荐| 色噜噜夜夜夜综合网| 欧美日韩一区不卡| 3d成人动漫网站| 日韩欧美久久久| 欧美精品一区二区三区一线天视频| 2019国产精品| 国产精品视频在线看| 亚洲精品国产精华液| 丝袜亚洲精品中文字幕一区| 久久精品av麻豆的观看方式| 国产精品99久久久久| 日本电影欧美片| 91精品国产麻豆| 国产精品欧美一级免费| 一区二区三区四区在线| 日本欧美大码aⅴ在线播放| 国模无码大尺度一区二区三区| 国产91丝袜在线18| 色狠狠色狠狠综合| 日韩女优电影在线观看| 国产蜜臀av在线一区二区三区| 亚洲人成小说网站色在线| 三级亚洲高清视频| 岛国一区二区在线观看| 欧美日韩在线播放一区| 精品免费日韩av| 亚洲欧洲综合另类| 经典三级在线一区| 欧美调教femdomvk| 欧美经典一区二区| 丝袜诱惑制服诱惑色一区在线观看| 国产精品456露脸| 欧美男男青年gay1069videost| 26uuu久久综合| 亚瑟在线精品视频| 成人精品视频.| 26uuu亚洲婷婷狠狠天堂| 亚洲精品国产一区二区三区四区在线 | 国产无一区二区|