summaryrefslogtreecommitdiff
path: root/usr/src/lib/libfakekernel/common/sys/proc.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libfakekernel/common/sys/proc.h')
-rw-r--r--usr/src/lib/libfakekernel/common/sys/proc.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/usr/src/lib/libfakekernel/common/sys/proc.h b/usr/src/lib/libfakekernel/common/sys/proc.h
new file mode 100644
index 0000000000..1ded4eb5a7
--- /dev/null
+++ b/usr/src/lib/libfakekernel/common/sys/proc.h
@@ -0,0 +1,125 @@
+/*
+ * 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 (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
+ */
+
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
+#ifndef _SYS_PROC_H
+#define _SYS_PROC_H
+
+#include <sys/time.h>
+#include <sys/thread.h>
+#include <sys/cred.h>
+#include <sys/debug.h>
+#include <sys/signal.h>
+#include <sys/list.h>
+#include <sys/avl.h>
+#include <sys/refstr.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct pool;
+struct task;
+struct zone;
+
+/*
+ * One structure allocated per active process. It contains all
+ * data needed about the process while the process may be swapped
+ * out. Other per-process data (user.h) is also inside the proc structure.
+ * Lightweight-process data (lwp.h) and the kernel stack may be swapped out.
+ */
+typedef struct proc {
+
+ struct cred *p_cred; /* process credentials */
+
+ struct pid *p_pidp; /* process ID info */
+ struct pid *p_pgidp; /* process group ID info */
+
+ /*
+ * Per process lwp and kernel thread stuff
+ */
+
+ struct zone *p_zone; /* zone in which process lives */
+
+ int do_not_use[10];
+ int p_user[10]; /* (see sys/user.h) */
+} proc_t;
+
+#define PROC_T /* headers relying on proc_t are OK */
+
+/* process ID info */
+
+struct pid {
+ unsigned int pid_prinactive :1;
+ unsigned int pid_pgorphaned :1;
+ unsigned int pid_padding :6; /* used to be pid_ref, now an int */
+ unsigned int pid_prslot :24;
+ pid_t pid_id;
+ struct proc *pid_pglink;
+ struct proc *pid_pgtail;
+ struct pid *pid_link;
+ uint_t pid_ref;
+};
+
+#define p_pgrp p_pgidp->pid_id
+#define p_pid p_pidp->pid_id
+#define p_slot p_pidp->pid_prslot
+#define p_detached p_pgidp->pid_pgorphaned
+
+#define PID_HOLD(pidp) ASSERT(MUTEX_HELD(&pidlock)); \
+ ++(pidp)->pid_ref;
+#define PID_RELE(pidp) ASSERT(MUTEX_HELD(&pidlock)); \
+ (pidp)->pid_ref > 1 ? \
+ --(pidp)->pid_ref : pid_rele(pidp);
+
+/*
+ * Structure containing persistent process lock. The structure and
+ * macro allow "mutex_enter(&p->p_lock)" to continue working.
+ */
+struct plock {
+ kmutex_t pl_lock;
+};
+#define p_lock p_lockp->pl_lock
+
+extern proc_t p0; /* process 0 */
+extern struct plock p0lock; /* p0's plock */
+extern struct pid pid0; /* p0's pid */
+
+
+/*
+ * This is normally in sunddi.h but
+ * I didn't want to drag that in here.
+ */
+pid_t
+ddi_get_pid(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_PROC_H */