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

📄 __uclibc_main.c

📁 linux下用PCMCIA无线网卡虚拟无线AP的程序源码
💻 C
字号:
/* * Manuel Novoa III           Feb 2001 * * __uClibc_main is the routine to be called by all the arch-specific * versions of crt0.S in uClibc. * * It is meant to handle any special initialization needed by the library * such as setting the global variable(s) __environ (environ) and * initializing the stdio package.  Using weak symbols, the latter is * avoided in the static library case. */#include <stdlib.h>#include <unistd.h>#include <errno.h>/* * Prototypes. */extern int main(int argc, char **argv, char **envp);extern void __uClibc_empty_func(void);void __uClibc_main(int argc, char **argv, char **envp)	 __attribute__ ((__noreturn__));#ifdef HAVE_ELFweak_alias(__environ, environ);weak_symbol(__init_stdio);weak_symbol(__stdio_close_all);#endif	extern void __init_stdio(void);extern void __stdio_close_all(void);typedef void (*vfuncp) (void);vfuncp __uClibc_cleanup = __stdio_close_all;/* * Now for our main routine. */void __uClibc_main(int argc, char **argv, char **envp) {	/* 	 * Initialize the global variable __environ.	 */	__environ = envp;	/*	 * Initialize stdio here.  In the static library case, this will	 * be bypassed if not needed because of the weak alias above.	 */	if (__init_stdio)	  __init_stdio();	/*	 * Note: It is possible that any initialization done above could	 * have resulted in errno being set nonzero, so set it to 0 before	 * we call main.	 */	__set_errno(0);	/*	 * Finally, invoke application's main and then exit.	 */	exit(main(argc, argv, envp));}/* * Declare the __environ global variable and create a weak alias environ. * Note: Apparently we must initialize __environ for the weak environ * symbol to be included. */char **__environ = 0;#ifndef HAVE_ELF/* * Define an empty function and use it as a weak alias for the stdio * initialization routine.  That way we don't pull in all the stdio * code unless we need to.  Similarly, do the same for __stdio_close_all * so as not to include atexit unnecessarily. * * NOTE!!! This is only true for the _static_ case!!! */void __uClibc_empty_func(void){}weak_alias(__environ, environ);weak_alias(__uClibc_empty_func, __init_stdio);weak_alias(__uClibc_empty_func, __stdio_close_all);#endif	

⌨️ 快捷键说明

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