cloudabi_thread.c (285540) | cloudabi_thread.c (285908) |
---|---|
1/*- 2 * Copyright (c) 2015 Nuxi, https://nuxi.nl/ 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. --- 10 unchanged lines hidden (view full) --- 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 */ 25 26#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2015 Nuxi, https://nuxi.nl/ 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. --- 10 unchanged lines hidden (view full) --- 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 */ 25 26#include <sys/cdefs.h> |
27__FBSDID("$FreeBSD: head/sys/compat/cloudabi/cloudabi_thread.c 285540 2015-07-14 15:11:50Z ed $"); | 27__FBSDID("$FreeBSD: head/sys/compat/cloudabi/cloudabi_thread.c 285908 2015-07-27 10:07:29Z ed $"); |
28 29#include <sys/param.h> 30#include <sys/proc.h> 31#include <sys/sched.h> | 28 29#include <sys/param.h> 30#include <sys/proc.h> 31#include <sys/sched.h> |
32#include <sys/syscallsubr.h> |
|
32 33#include <compat/cloudabi/cloudabi_proto.h> | 33 34#include <compat/cloudabi/cloudabi_proto.h> |
35#include <compat/cloudabi/cloudabi_syscalldefs.h> |
|
34 35int 36cloudabi_sys_thread_exit(struct thread *td, 37 struct cloudabi_sys_thread_exit_args *uap) 38{ | 36 37int 38cloudabi_sys_thread_exit(struct thread *td, 39 struct cloudabi_sys_thread_exit_args *uap) 40{ |
41 struct cloudabi_sys_lock_unlock_args cloudabi_sys_lock_unlock_args = { 42 .lock = uap->lock, 43 .scope = uap->scope, 44 }; |
|
39 | 45 |
40 /* Not implemented. */ 41 return (ENOSYS); | 46 /* Wake up joining thread. */ 47 cloudabi_sys_lock_unlock(td, &cloudabi_sys_lock_unlock_args); 48 49 /* 50 * Attempt to terminate the thread. Terminate the process if 51 * it's the last thread. 52 */ 53 kern_thr_exit(td); 54 exit1(td, 0, 0); 55 /* NOTREACHED */ |
42} 43 44int 45cloudabi_sys_thread_tcb_set(struct thread *td, 46 struct cloudabi_sys_thread_tcb_set_args *uap) 47{ 48 49 return (cpu_set_user_tls(td, uap->tcb)); 50} 51 52int 53cloudabi_sys_thread_yield(struct thread *td, 54 struct cloudabi_sys_thread_yield_args *uap) 55{ 56 57 sched_relinquish(td); 58 return (0); 59} | 56} 57 58int 59cloudabi_sys_thread_tcb_set(struct thread *td, 60 struct cloudabi_sys_thread_tcb_set_args *uap) 61{ 62 63 return (cpu_set_user_tls(td, uap->tcb)); 64} 65 66int 67cloudabi_sys_thread_yield(struct thread *td, 68 struct cloudabi_sys_thread_yield_args *uap) 69{ 70 71 sched_relinquish(td); 72 return (0); 73} |