#include <string.h>
// === IMPORTS ===
+extern int gSocket;
extern int giSyscall_ClientID;
+extern void acess__exit(int Status);
+extern void Request_Preinit(void);
// === PROTOTYPES ===
void CallUser(void *Entry, int argc, char *argv[], char **envp) __attribute__((noreturn));
char *appPath = NULL;
int (*appMain)(int, char *[], char **);
void *base;
+ int rv;
+ Request_Preinit();
+
// int syscall_handle = -1;
for( i = 1; i < argc; i ++ )
giSyscall_ClientID = atoi(argv[++i]);
continue ;
}
+
+ if(strcmp(argv[i], "--socket") == 0) {
+ gSocket = atoi(argv[++i]);
+ continue ;
+ }
if(strcmp(argv[i], "--binary") == 0) {
appPath = argv[++i];
printf("\"%s\" ", appArgv[i]);
printf("\n");
printf("[DEBUG %i] appMain = %p\n", giSyscall_ClientID, appMain);
- #if 0
- __asm__ __volatile__ (
- "push %0;\n\t"
- "push %1;\n\t"
- "push %2;\n\t"
- "jmp *%3;\n\t"
- : : "r" (envp), "r" (appArgv), "r" (appArgc), "r" (appMain) );
- return -1;
- #elif 1
- CallUser(appMain, appArgc, appArgv, envp);
- #else
- return appMain(appArgc, appArgv, NULL);
- #endif
+// CallUser(appMain, appArgc, appArgv, envp);
+ rv = appMain(appArgc, appArgv, envp);
+ acess__exit(rv);
+ return rv;
}
void CallUser(void *Entry, int argc, char *argv[], char **envp)
{
+ #if 0
__asm__ __volatile__ (
- "mov %1, %%esp;\n\t"
- "jmp *%0"
- : : "r" (Entry), "r" (&argc)
+ "push %3;\n\t"
+ "push %2;\n\t"
+ "push %1;\n\t"
+ "call *%0"
+ : : "r" (Entry), "r" (argc), "r" (argv), "r" (envp)
);
+ #else
+ #endif
for(;;);
}