📄 main.c
字号:
/** * A simple test of the user-space program */#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include "user_dl.h"struct par { int argc; char **argv;};#define qprintf if ( !quiet ) printfvoid *thr_main( void *a ) { struct par *params = a; int argc = params->argc; char **argv = params->argv; int arg, quiet = 1, quit = 1, i; for ( arg = 1; arg < argc; arg++ ) { if ( strcmp( argv[ arg ], "-v" ) == 0 ) { quiet = 0; } else if ( strcmp( argv[ arg ], "-q" ) == 0 ) { quiet = 1; } else if ( strcmp( argv[ arg ], "-s" ) == 0 ) { qprintf( "loading: user, memory, dbg, cdb, sdb, std\n" ); loadModule( "user" ); loadModule( "memory" ); loadModule( "std" ); loadModule( "cdb" ); loadModule( "sdb" ); loadModule( "dbg" ); } else if ( strcmp( argv[ arg ], "-t" ) == 0 ) { if ( ++arg < argc ) { qprintf( "Testing %s\n", argv[ arg ] ); loadModule( argv[ arg ] ); } else { printf( "need parameter afer '-t'\n" ); } } else if ( strcmp( argv[ arg ], "--help" ) == 0 ) { printf( "Usage of %s:\n", *argv ); printf( "\t-v\tverbose - show some debugging-messages\n" "\t-s\tstandard modules -> memory, dbg, cdb, sdb\n" "\t-t name\ttest module name\n" "\t-w time\ttime to wait for unloading module, 0 for eternity\n" "\tname\tmodule to load\n\n" ); } else if ( strcmp( argv[ arg ], "-w" ) == 0 ) { if ( ++arg < argc ) { if ( argv[ arg ] ) { i = atoi( argv[ arg ] ); if ( i > 0 ) { qprintf( "Waiting %is\n", i ); sleep( i ); } else { qprintf( "Not quitting\n" ); quit = 0; } } } else { printf( "need parameter after '-w'\n" ); } } else { qprintf( "Loading %s\n", argv[ arg ] ); loadModule( argv[ arg ] ); } } if ( !quit ) { qprintf( "Waiting forever\n" ); // So that in the debugger we can set quit to 1 and see what'll happen... while ( !quit ) sleep(1); } qprintf( "Going to quit\n" ); return 0;}int main(int argc, char **argv) { pthread_t t; struct par p; pthread_attr_t attr; p.argc = argc; p.argv = argv; user_dl_init(); pthread_attr_init( &attr ); if ( pthread_create( &t, &attr, thr_main, &p ) < 0 ) { printf( "Couldn't initilise basic-thread\n" ); return -1; } pthread_attr_destroy( &attr ); pthread_join( t, NULL ); pthread_cancel( t ); user_dl_fini(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -