diff options
| author | Toomas Soome <tsoome@me.com> | 2018-10-16 15:01:20 +0300 |
|---|---|---|
| committer | Richard Lowe <richlowe@richlowe.net> | 2018-12-20 21:51:05 +0000 |
| commit | 1ec00b5abd071c76e2dc0cfa7905965b6b7a89a9 (patch) | |
| tree | 6b566cda20167f640352d9c93fb56cf875407f1c | |
| parent | a22312a2010fbc0fae7e50874e1cc393f1256887 (diff) | |
| download | illumos-joyent-1ec00b5abd071c76e2dc0cfa7905965b6b7a89a9.tar.gz | |
10071 genunix: loadable_syscall: cast between incompatible function types
Reviewed by: Andy Stormont <astormont@racktopsystems.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Gergő Mihály Doma <domag02@gmail.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
| -rw-r--r-- | usr/src/uts/intel/ia32/os/syscall.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/usr/src/uts/intel/ia32/os/syscall.c b/usr/src/uts/intel/ia32/os/syscall.c index f2087a2023..45d707199a 100644 --- a/usr/src/uts/intel/ia32/os/syscall.c +++ b/usr/src/uts/intel/ia32/os/syscall.c @@ -136,7 +136,7 @@ static struct sysent sysent_err = { /* * Called from syscall() when a non-trivial 32-bit system call occurs. - * Sets up the args and returns a pointer to the handler. + * Sets up the args and returns a pointer to the handler. */ struct sysent * syscall_entry(kthread_t *t, long *argp) @@ -219,8 +219,9 @@ syscall_exit(kthread_t *t, long rval1, long rval2) rp->r_r0 = rval1; rp->r_r1 = rval2; lwp->lwp_state = LWP_USER; - } else + } else { post_syscall(rval1, rval2); + } t->t_sysnum = 0; /* invalidate args */ } @@ -392,9 +393,9 @@ pre_syscall() (void) save_syscall_args(); mutex_enter(&systrace_lock); printf("%d: ", p->p_pid); - if (code >= NSYSCALL) + if (code >= NSYSCALL) { printf("0x%x", code); - else { + } else { sysname = mod_getsysname(code); printf("%s[0x%x/0x%p]", sysname == NULL ? "NULL" : sysname, code, callp->sy_callc); @@ -623,7 +624,7 @@ sig_check: * Note we will still take the lock and check the binding * if the condition was true without the lock held. This * prevents lock contention among threads owned by the - * same proc. + * same proc. */ if (curthread->t_proc_flag & TP_CHANGEBIND) { @@ -1187,7 +1188,6 @@ loadable_syscall( struct sysent *se = LWP_GETSYSENT(lwp); krwlock_t *module_lock; int code, error = 0; - int64_t (*sy_call)(); code = curthread->t_sysnum; callp = se + code; @@ -1205,10 +1205,11 @@ loadable_syscall( if (lwp_getdatamodel(lwp) == DATAMODEL_NATIVE) { #if defined(_LP64) if (callp->sy_flags & SE_ARGC) { - sy_call = (int64_t (*)())callp->sy_call; - rval = (*sy_call)(a0, a1, a2, a3, a4, a5); - } else + rval = (int64_t)(*callp->sy_call)(a0, a1, a2, a3, + a4, a5); + } else { rval = syscall_ap(); + } } else { #endif /* @@ -1219,12 +1220,12 @@ loadable_syscall( if (error) { rval = set_errno(error); } else if (callp->sy_flags & SE_ARGC) { - sy_call = (int64_t (*)())callp->sy_call; - rval = (*sy_call)(lwp->lwp_ap[0], lwp->lwp_ap[1], - lwp->lwp_ap[2], lwp->lwp_ap[3], lwp->lwp_ap[4], - lwp->lwp_ap[5]); - } else + rval = (int64_t)(*callp->sy_call)(lwp->lwp_ap[0], + lwp->lwp_ap[1], lwp->lwp_ap[2], lwp->lwp_ap[3], + lwp->lwp_ap[4], lwp->lwp_ap[5]); + } else { rval = syscall_ap(); + } } THREAD_KPRI_REQUEST(); /* regain priority from read lock */ |
