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

📄 init.cpp

📁 自已写的一个嵌入式实时多任务抢占式操作系统。花了几个礼拜
💻 CPP
字号:
#include "fileio.h"
#include "memfile.h"
#include <stdio.h>
#include <string.h>

//extern void __init(void);
//extern int main(int, char **, char **);
extern char __DATA_ROM[], __DATA_RAM[], __DATA_END[], __BSS_START[], __BSS_END[];

char **environ;	/* used by getenv(), putenv()	*/

char *__env[] = {
	NULL
};

/**************	Local data, types, fns and macros ***************/


/**************	Implementation of exported functions ************/
extern "C" int init_main_guts(void);

int init_main_guts(void)
{
	//int argc;

	/* move initialized data from ROM to RAM if defined at	*/
	/* different locations					*/
	if (__DATA_ROM != __DATA_RAM) {
		Memcpy(__DATA_RAM,__DATA_ROM,__DATA_END-__DATA_RAM);
	} else {
#if LATER
		/* init some initialized data to make it easier	*/
		/* to run multiple times			*/
		extern char *__heap_beg, *__heap_ptr;
		__uinfo[0].dev = __uinfo[1].dev = __uinfo[2].dev = DT_CHR;
		__uinfo[0].min = STDIN_MIN;
		__uinfo[1].min = STDOUT_MIN;
		__uinfo[2].min = STDERR_MIN;
		__heap_ptr = __heap_beg;
#endif
	}

	/* clear uninitialized data				*/
	if (__BSS_START != __BSS_END) {
		Memset(__BSS_START,0,__BSS_END-__BSS_START);
	}

	/* check how many arguments we have			*/
//	for(argc = 0; __argv[argc] != NULL; argc++) ;

	environ = __env;

	/* initialize constructors				*/
//	__init();

	/* prepare to call the main function			*/
//		return argc ;
}

/* Need a wrapper function so that this function will work
   whether or not it is linked with something that uses 
   small data */
/*
int __init_main(void)
{
	int argc = init_main_guts() ;
	return main(argc,__argv,__env) ;
}
*/

⌨️ 快捷键说明

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