Deleted Added
full compact
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}