コード例 #1
0
ファイル: nas_rte.c プロジェクト: NieHao/Tomato-RAF
/* nas task entry */
int
nas_init(int argc, char *argv[])
{
	nas_wksp_t *nwksp = NULL;

	/* alloc nas/wpa work space */
	if (!(nwksp = nas_wksp_alloc_workspace())) {
		NASMSG("Unable to allocate memory. Quitting...\n");
		goto exit0;
	}

	/* init nas/wpa work space */
	if (nas_wksp_parse_cmd_line(argc, argv, nwksp)) {
		NASMSG("Command line parsing error. Quitting...\n");
		goto exit1;
	}
	if (!nwksp->nwcbs) {
		NASMSG("No interface specified. Quitting...\n");
		goto exit1;
	}

	/* init nas */
	if (nas_wksp_init(nwksp)) {
		NASMSG("Unable to initialize NAS. Quitting...\n");
		goto exit1;
	}
	goto exit0;

	/* error handling */
exit1:
	nas_wksp_free_workspace(nwksp);
exit0:
	return 0;
}
コード例 #2
0
ファイル: nas_ecos.c プロジェクト: NieHao/Tomato-RAF
void
nasd_start(void)
{
	int wait_time = 1 * 100; /* 1 second */

	if (!_nas_pid ||
	     !oslib_waitpid(_nas_pid, NULL)) {
		cyg_thread_create(7,
		                     (cyg_thread_entry_t *)nas_main,
		                     (cyg_addrword_t)NULL,
		                     "NAS",
		                     (void *)nas_main_stack,
		                     sizeof(nas_main_stack),
		                     &nas_main_hdl,
		                     &nas_thread);
		cyg_thread_resume(nas_main_hdl);

		/* Make sure nas stared and initial completed. Otherwise,
		 * it may lost some wireless driver events.
		 */
		while (_nas_ready == 0 && wait_time > 0) {
			cyg_thread_delay(10);
			wait_time -= 10;
		}

		NASMSG("NAS task started\n");
	}
}
コード例 #3
0
ファイル: nas_ecos.c プロジェクト: NieHao/Tomato-RAF
/* nas task entry */
int nas_main(void)
{
#ifdef BCMDBG
	char debug[8];
#endif
	/* clear _nas_ready */
	_nas_ready = 0;

	/* fill up NAS task pid */
	_nas_pid = oslib_pid();

	/* clear rootnwksp */
	nas_nwksp = NULL;

	/* alloc nas/wpa work space */
	if (!(nas_nwksp = nas_wksp_alloc_workspace())) {
		NASMSG("Unable to allocate work space memory. Quitting...\n");
		return -1;
	}

#ifdef BCMDBG
	/* verbose - 0:no | others:yes */
	/* for workspace */
	if (nas_safe_get_conf(debug, sizeof(debug), "nas_dbg") == 0)
		debug_nwksp = (int)atoi(debug);
#endif

	/* run main loop to dispatch message */
	nas_wksp_main_loop(nas_nwksp);

	return 0;
}
コード例 #4
0
ファイル: nas_bsd.c プロジェクト: AllardJ/Tomato
/* service main entry */
int
main(int argc, char *argv[])
{
	/* display usage if nothing is specified */
	if (argc == 2 &&
	    (!strncmp(argv[1], "-h", 2) ||
	     !strncmp(argv[1], "-H", 2))) {
		nas_wksp_display_usage();
		return 0;
	}

	/* alloc nas/wpa work space */
	if (!(nas_nwksp = nas_wksp_alloc_workspace())) {
		NASMSG("Unable to allocate work space memory. Quitting...\n");
		return 0;
	}

	if (argc > 1 && nas_wksp_parse_cmd(argc, argv, nas_nwksp)) {
		NASMSG("Command line parsing error. Quitting...\n");
		nas_wksp_free_workspace(nas_nwksp);
		return 0;
	}
	else {
#ifdef BCMDBG
		/* verbose - 0:no | others:yes */
		/* for workspace */
		char debug[8];
		if (nas_safe_get_conf(debug, sizeof(debug), "nas_dbg") == 0)
			debug_nwksp = (int)atoi(debug);
#endif
	}

	/* establish a handler to handle SIGTERM. */
	signal(SIGTERM, hup_hdlr);

	/* run main loop to dispatch messages */
	nas_wksp_main_loop(nas_nwksp);

	return 0;
}
コード例 #5
0
ファイル: nas_ecos.c プロジェクト: NieHao/Tomato-RAF
void
nasd_stop(void)
{
	if (_nas_pid) {
		hup_hdlr(15 /* SIGTERM */);

		/* wait until not running */
		while (oslib_waitpid(_nas_pid, NULL))
			cyg_thread_delay(10);
		_nas_pid = 0;
		NASMSG("NAS task stopped\n");
	}
}