uti: Replace data types represented as arrays with C structures
Defining C structures for the following objects: (1) Remote and local context (2) Stack of system call arguments / return values Change-Id: Iafbb6c795bd765e3c78c54a255d8a1e4d4536288
This commit is contained in:
@@ -55,8 +55,8 @@
|
||||
#define MCEXEC_UP_SYS_UMOUNT 0x30a02915
|
||||
#define MCEXEC_UP_SYS_UNSHARE 0x30a02916
|
||||
|
||||
#define MCEXEC_UP_UTIL_THREAD1 0x30a02920
|
||||
#define MCEXEC_UP_UTIL_THREAD2 0x30a02921
|
||||
#define MCEXEC_UP_UTI_GET_CTX 0x30a02920
|
||||
#define MCEXEC_UP_UTI_SAVE_FS 0x30a02921
|
||||
#define MCEXEC_UP_SIG_THREAD 0x30a02922
|
||||
#define MCEXEC_UP_SYSCALL_THREAD 0x30a02924
|
||||
#define MCEXEC_UP_TERMINATE_THREAD 0x30a02925
|
||||
@@ -331,4 +331,26 @@ struct uti_attr_desc {
|
||||
unsigned long phys_attr;
|
||||
};
|
||||
|
||||
struct uti_ctx {
|
||||
union {
|
||||
char ctx[4096]; /* TODO: Get the size from config.h */
|
||||
struct {
|
||||
int uti_refill_tid;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
struct uti_get_ctx_desc {
|
||||
unsigned long rp_rctx; /* Remote physical address of remote context */
|
||||
void *rctx; /* Remote context */
|
||||
void *lctx; /* Local context */
|
||||
int uti_refill_tid;
|
||||
unsigned long key; /* OUT: struct task_struct* of mcexec thread, used to search struct host_thread */
|
||||
};
|
||||
|
||||
struct uti_save_fs_desc {
|
||||
void *rctx; /* Remote context */
|
||||
void *lctx; /* Local context */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,17 +8,20 @@ struct syscall_struct {
|
||||
unsigned long uti_clv; /* copy of a clv in McKernel */
|
||||
};
|
||||
|
||||
#define UTI_SZ_SYSCALL_STACK 16
|
||||
|
||||
/* Variables accessed by mcexec.c and syscall_intercept.c */
|
||||
struct uti_desc {
|
||||
void *wp; /* Syscall arguments list and record of McKernel context and Linux context */
|
||||
char lctx[4096]; /* TODO: Get the size from config.h */
|
||||
char rctx[4096]; /* TODO: Get the size from config.h */
|
||||
int mck_tid; /* TODO: Move this out for multiple migrated-to-Linux threads */
|
||||
unsigned long key; /* struct task_struct* of mcexec thread, used to search struct host_thread */
|
||||
int pid, tid; /* Used as the id of tracee when issuing MCEXEC_UP_TERMINATE_THREAD */
|
||||
unsigned long uti_clv; /* copy of McKernel clv */
|
||||
|
||||
int fd; /* /dev/mcosX */
|
||||
struct syscall_struct *syscall_param_top; /* stack-pointer of syscall arguments list */
|
||||
struct syscall_struct *syscall_param; /* TODO: make it auto variable */
|
||||
struct syscall_struct syscall_stack[UTI_SZ_SYSCALL_STACK]; /* stack of system call arguments and return values */
|
||||
int syscall_stack_top; /* stack-pointer of syscall arguments list */
|
||||
long syscalls[512], syscalls2[512]; /* Syscall profile counters */
|
||||
int start_syscall_intercept; /* Used to sync between mcexec.c and syscall_intercept.c */
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user