summaryrefslogtreecommitdiff
path: root/usr/src/lib/libfakekernel/common/sys/thread.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libfakekernel/common/sys/thread.h')
-rw-r--r--usr/src/lib/libfakekernel/common/sys/thread.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/usr/src/lib/libfakekernel/common/sys/thread.h b/usr/src/lib/libfakekernel/common/sys/thread.h
new file mode 100644
index 0000000000..6213be2807
--- /dev/null
+++ b/usr/src/lib/libfakekernel/common/sys/thread.h
@@ -0,0 +1,114 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
+ */
+
+#ifndef _SYS_THREAD_H
+#define _SYS_THREAD_H
+
+#include <sys/types.h>
+#include <sys/t_lock.h>
+#include <sys/klwp.h>
+#include <sys/signal.h> /* expected by including code */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The thread object, its states, and the methods by which it
+ * is accessed.
+ */
+
+/*
+ * Values that t_state may assume. Note that t_state cannot have more
+ * than one of these flags set at a time.
+ */
+#define TS_FREE 0x00 /* Thread at loose ends */
+#define TS_SLEEP 0x01 /* Awaiting an event */
+#define TS_RUN 0x02 /* Runnable, but not yet on a processor */
+#define TS_ONPROC 0x04 /* Thread is being run on a processor */
+#define TS_ZOMB 0x08 /* Thread has died but hasn't been reaped */
+#define TS_STOPPED 0x10 /* Stopped, initial state */
+#define TS_WAIT 0x20 /* Waiting to become runnable */
+
+/* ctxop_t */
+
+/* afd_t needed by sys/file.h via sys/t_lock.h */
+typedef struct _afd_not_used afd_t;
+
+struct turnstile;
+struct panic_trap_info;
+struct upimutex;
+struct kproject;
+struct on_trap_data;
+struct waitq;
+struct _kcpc_ctx;
+struct _kcpc_set;
+
+/* Definition for kernel thread identifier type */
+typedef uint64_t kt_did_t;
+
+struct _kthread;
+typedef struct _kthread *kthread_id_t;
+
+typedef struct _kthread kthread_t;
+
+extern kthread_t *_curthread(void); /* returns thread pointer */
+#define curthread (_curthread()) /* current thread pointer */
+
+#define _KTHREAD_INVALID ((void *)(uintptr_t)-1)
+
+
+struct proc;
+extern struct proc *_curproc(void);
+#define curproc (_curproc()) /* current proc pointer */
+
+struct zone;
+extern struct zone *_curzone(void);
+#define curzone (_curzone()) /* current zone pointer */
+
+extern kthread_t *thread_create(
+ caddr_t stk,
+ size_t stksize,
+ void (*proc)(),
+ void *arg,
+ size_t len,
+ struct proc *pp,
+ int state,
+ pri_t pri);
+extern void thread_exit(void) __NORETURN;
+extern void thread_join(kt_did_t);
+
+extern kthread_t *zthread_create(caddr_t, size_t, void (*)(), void *, size_t,
+ pri_t);
+extern void zthread_exit(void) __NORETURN;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_THREAD_H */