Files
c_soft/main.c

101 lines
1.6 KiB
C
Raw Normal View History

2024-06-18 19:37:43 +08:00
#include "stdio.h"
#include "regex.h"
#include "stdlib.h"
#include "stdint.h"
#include "soft/exception.h"
#include "soft/mythread.h"
#include "unistd.h"
#include "soft/debug.h"
2024-10-30 19:08:46 +08:00
#include "string.h"
#include "soft/clexical.h"
2024-06-18 19:37:43 +08:00
2024-10-30 19:08:46 +08:00
2024-11-28 19:11:39 +08:00
const char g_str[] =
"int main() {\n"
" int index=-1000;\n"
" while(index--){\n"
" printf(index>=0);\n"
" }\n"
2024-10-30 19:08:46 +08:00
"}";
2024-12-27 19:07:01 +08:00
__attribute__((weak)) int thread_fun(void* t) {
DBG_INFO("run in thread_fun.\n");
2024-12-31 16:29:03 +08:00
// lex_analysis(g_str , strlen(g_str));
2024-06-18 19:37:43 +08:00
return 0;
}
2024-12-31 16:29:03 +08:00
int g_argc;
// char* g_argv[100];
char** g_argv;
2024-06-18 19:37:43 +08:00
2024-12-31 16:29:03 +08:00
void set_argv(int argc, char* argv[]) {
g_argc = argc;
// for (int i = 0;i < argc;i++) {
// g_argv[i] = argv[i];
// }
g_argv = argv;
}
int get_argv(char** argv[]) {
// *argv = *(char ***)(g_argv);
*argv = (g_argv);
return g_argc;
}
2024-06-18 19:37:43 +08:00
void SystemInit();
extern char **environ;
2024-12-31 16:29:03 +08:00
int main(int argc, char* argv[]) {
set_argv(argc, argv);
debug_init(NULL);
2024-12-31 16:29:03 +08:00
DBG_INFO("hello world.%ld\n", (size_t)pthread_self());
2024-06-18 19:37:43 +08:00
2024-12-31 16:29:03 +08:00
myth_create(thread_fun, NULL);
2024-06-18 19:37:43 +08:00
2024-10-30 19:08:46 +08:00
myth_join( );
2024-06-18 19:37:43 +08:00
}
#define func_def(...)
#define SLOT_FUN_RUN(fun,param) \
((slot_fun_def)(fun))(param[0],param[1],param[2],\
param[3],param[4],param[5],param[6],param[7])
typedef void (*slot_fun_def)(size_t a,size_t b,size_t c,size_t d,size_t e,size_t f,size_t g,size_t h);
void funptr_test(){
DBG_INFO("print from funptr_test fun.\n");
2024-06-18 19:37:43 +08:00
}
void add_test(int a,int b,void (*f)()){
DBG_INFO("add_fun:%d+%d=%d\n",a,b,a+b);
2024-06-18 19:37:43 +08:00
f();
}
void SystemInit()
{
func_def(int (int a,int b){
int a;
return;
});
size_t pars[8]={4,5,(size_t)funptr_test};
SLOT_FUN_RUN(add_test,pars);
}