uti: Change field name of release_user_space_desc
Change-Id: I18ada86ec3835198c1a947d8ceb36075d6ff2e94
This commit is contained in:
@@ -255,7 +255,11 @@ struct release_user_space_desc {
|
|||||||
struct terminate_thread_desc {
|
struct terminate_thread_desc {
|
||||||
int pid;
|
int pid;
|
||||||
int tid;
|
int tid;
|
||||||
long sig;
|
|
||||||
|
long code;
|
||||||
|
/* 32------32 31--16 15--------8 7----0
|
||||||
|
exit_group exit-status signal */
|
||||||
|
|
||||||
unsigned long tsk; /* struct task_struct * */
|
unsigned long tsk; /* struct task_struct * */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2509,14 +2509,14 @@ mcexec_sig_thread(ihk_os_t os, unsigned long arg, struct file *file)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static long mcexec_terminate_thread_unsafe(ihk_os_t os, int pid, int tid, long sig, struct task_struct *tsk)
|
static long mcexec_terminate_thread_unsafe(ihk_os_t os, int pid, int tid, long code, struct task_struct *tsk)
|
||||||
{
|
{
|
||||||
struct ikc_scd_packet *packet;
|
struct ikc_scd_packet *packet;
|
||||||
struct mcctrl_usrdata *usrdata = ihk_host_os_get_usrdata(os);
|
struct mcctrl_usrdata *usrdata = ihk_host_os_get_usrdata(os);
|
||||||
struct mcctrl_per_proc_data *ppd;
|
struct mcctrl_per_proc_data *ppd;
|
||||||
struct mcctrl_per_thread_data *ptd;
|
struct mcctrl_per_thread_data *ptd;
|
||||||
|
|
||||||
dprintk("%s: target pid=%d,tid=%d,sig=%lx,task=%p\n", __FUNCTION__, pid, tid, sig, tsk);
|
dprintk("%s: target pid=%d,tid=%d,code=%lx,task=%p\n", __FUNCTION__, pid, tid, code, tsk);
|
||||||
|
|
||||||
ppd = mcctrl_get_per_proc_data(usrdata, pid);
|
ppd = mcctrl_get_per_proc_data(usrdata, pid);
|
||||||
if (!ppd) {
|
if (!ppd) {
|
||||||
@@ -2542,7 +2542,7 @@ static long mcexec_terminate_thread_unsafe(ihk_os_t os, int pid, int tid, long s
|
|||||||
__FUNCTION__, tid);
|
__FUNCTION__, tid);
|
||||||
goto no_ptd;
|
goto no_ptd;
|
||||||
}
|
}
|
||||||
__return_syscall(usrdata->os, packet, sig, tid);
|
__return_syscall(usrdata->os, packet, code, tid);
|
||||||
ihk_ikc_release_packet((struct ihk_ikc_free_packet *)packet,
|
ihk_ikc_release_packet((struct ihk_ikc_free_packet *)packet,
|
||||||
(usrdata->ikc2linux[smp_processor_id()] ?
|
(usrdata->ikc2linux[smp_processor_id()] ?
|
||||||
usrdata->ikc2linux[smp_processor_id()] :
|
usrdata->ikc2linux[smp_processor_id()] :
|
||||||
@@ -2606,7 +2606,7 @@ mcexec_terminate_thread(ihk_os_t os, struct terminate_thread_desc * __user arg)
|
|||||||
|
|
||||||
write_unlock_irqrestore(&host_thread_lock, flags);
|
write_unlock_irqrestore(&host_thread_lock, flags);
|
||||||
|
|
||||||
rc = mcexec_terminate_thread_unsafe(os, desc.pid, desc.tid, desc.sig, (struct task_struct *)desc.tsk);
|
rc = mcexec_terminate_thread_unsafe(os, desc.pid, desc.tid, desc.code, (struct task_struct *)desc.tsk);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
return rc;
|
return rc;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ hook(long syscall_number,
|
|||||||
//return 1; /* debug */
|
//return 1; /* debug */
|
||||||
int tid = uti_syscall0(__NR_gettid);
|
int tid = uti_syscall0(__NR_gettid);
|
||||||
struct terminate_thread_desc term_desc;
|
struct terminate_thread_desc term_desc;
|
||||||
unsigned long sig;
|
unsigned long code;
|
||||||
|
|
||||||
if (!uti_desc.start_syscall_intercept) {
|
if (!uti_desc.start_syscall_intercept) {
|
||||||
return 1; /* System call isn't taken over */
|
return 1; /* System call isn't taken over */
|
||||||
@@ -79,15 +79,15 @@ hook(long syscall_number,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case __NR_exit_group:
|
case __NR_exit_group:
|
||||||
sig = 0x100000000;
|
code = 0x100000000;
|
||||||
goto make_remote_thread_exit;
|
goto make_remote_thread_exit;
|
||||||
case __NR_exit:
|
case __NR_exit:
|
||||||
sig = 0;
|
code = 0;
|
||||||
make_remote_thread_exit:
|
make_remote_thread_exit:
|
||||||
/* Make migrated-to-Linux thread on the McKernel side call do_exit() or terminate() */
|
/* Make migrated-to-Linux thread on the McKernel side call do_exit() or terminate() */
|
||||||
term_desc.pid = uti_desc.pid;
|
term_desc.pid = uti_desc.pid;
|
||||||
term_desc.tid = uti_desc.tid; /* tid of mcexec */
|
term_desc.tid = uti_desc.tid; /* tid of mcexec */
|
||||||
term_desc.sig = sig | (arg0 << 8);
|
term_desc.code = code | ((arg0 & 255) << 8);
|
||||||
term_desc.tsk = uti_desc.key;
|
term_desc.tsk = uti_desc.key;
|
||||||
|
|
||||||
uti_syscall3(__NR_ioctl, uti_desc.fd, MCEXEC_UP_TERMINATE_THREAD, (long)&term_desc);
|
uti_syscall3(__NR_ioctl, uti_desc.fd, MCEXEC_UP_TERMINATE_THREAD, (long)&term_desc);
|
||||||
|
|||||||
Reference in New Issue
Block a user