summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys')
-rw-r--r--usr/src/uts/common/sys/ccompile.h1
-rw-r--r--usr/src/uts/common/sys/elf.h4
-rw-r--r--usr/src/uts/common/sys/proc.h11
-rw-r--r--usr/src/uts/common/sys/procfs.h15
-rw-r--r--usr/src/uts/common/sys/syscall.h46
5 files changed, 54 insertions, 23 deletions
diff --git a/usr/src/uts/common/sys/ccompile.h b/usr/src/uts/common/sys/ccompile.h
index de0031d6b0..e687fd99a3 100644
--- a/usr/src/uts/common/sys/ccompile.h
+++ b/usr/src/uts/common/sys/ccompile.h
@@ -160,6 +160,7 @@ extern "C" {
#define __unused __sun_attr__((__unused__))
#define __used __attribute__((__used__))
#define __weak_symbol __attribute__((__weak__))
+#define __HIDDEN __attribute__((visibility("hidden")))
#ifdef __cplusplus
}
diff --git a/usr/src/uts/common/sys/elf.h b/usr/src/uts/common/sys/elf.h
index 1a2ca397ef..384c6daf99 100644
--- a/usr/src/uts/common/sys/elf.h
+++ b/usr/src/uts/common/sys/elf.h
@@ -21,6 +21,7 @@
/*
* Copyright 2012 DEY Storage Systems, Inc. All rights reserved.
* Copyright (c) 2018, Joyent, Inc.
+ * Copyright 2020 Oxide Computer Company
*/
/*
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
@@ -1018,7 +1019,8 @@ typedef Elf64_Word Elf64_Capchain;
#define NT_SPYMASTER 23 /* psinfo_t for agent LWP spymaster */
#define NT_SECFLAGS 24 /* process security-flags */
#define NT_LWPNAME 25 /* prlwpname_t */
-#define NT_NUM 25
+#define NT_UPANIC 26 /* prupanic_t */
+#define NT_NUM 26
#ifdef _KERNEL
diff --git a/usr/src/uts/common/sys/proc.h b/usr/src/uts/common/sys/proc.h
index 757bbc87e7..bb6f62f83f 100644
--- a/usr/src/uts/common/sys/proc.h
+++ b/usr/src/uts/common/sys/proc.h
@@ -22,6 +22,7 @@
/*
* Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2018 Joyent, Inc.
+ * Copyright 2020 Oxide Computer Company
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
@@ -355,6 +356,8 @@ typedef struct proc {
kcondvar_t p_poolcv; /* synchronization with pools */
uint_t p_poolcnt; /* # threads inside pool barrier */
uint_t p_poolflag; /* pool-related flags (see below) */
+ uint_t p_upanicflag; /* upanic-related flags (see below) */
+ void *p_upanic; /* optional upanic data */
uintptr_t p_portcnt; /* event ports counter */
struct zone *p_zone; /* zone in which process lives */
struct vnode *p_execdir; /* directory that p_exec came from */
@@ -524,6 +527,14 @@ extern struct pid pid0; /* p0's pid */
#define PBWAIT 0x0001 /* process should wait outside fork/exec/exit */
#define PEXITED 0x0002 /* process exited and about to become zombie */
+/*
+ * p_upanicflag codes
+ */
+#define P_UPF_PANICKED 0x0001
+#define P_UPF_HAVEMSG 0x0002
+#define P_UPF_TRUNCMSG 0x0004
+#define P_UPF_INVALMSG 0x0008
+
/* Macro to convert proc pointer to a user block pointer */
#define PTOU(p) (&(p)->p_user)
diff --git a/usr/src/uts/common/sys/procfs.h b/usr/src/uts/common/sys/procfs.h
index 517f2551b4..3d6760a7b4 100644
--- a/usr/src/uts/common/sys/procfs.h
+++ b/usr/src/uts/common/sys/procfs.h
@@ -678,6 +678,21 @@ typedef struct prheader {
(((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) && \
(((uint32_t *)(sp))[((flag)-1)/32] & (1U<<(((flag)-1)%32))))
+/*
+ * Core file upanic NT_UPANIC structure.
+ */
+#define PRUPANIC_VERSION_1 1
+#define PRUPANIC_VERSION_CURRENT PRUPANIC_VERSION_1
+#define PRUPANIC_FLAG_MSG_VALID 0x01
+#define PRUPANIC_FLAG_MSG_ERROR 0x02
+#define PRUPANIC_FLAG_MSG_TRUNC 0x04
+#define PRUPANIC_BUFLEN 1024
+typedef struct prupanic {
+ uint32_t pru_version;
+ uint32_t pru_flags;
+ uint8_t pru_data[PRUPANIC_BUFLEN];
+} prupanic_t;
+
#if defined(_SYSCALL32)
/*
diff --git a/usr/src/uts/common/sys/syscall.h b/usr/src/uts/common/sys/syscall.h
index 8709f98c26..cd4f5445b0 100644
--- a/usr/src/uts/common/sys/syscall.h
+++ b/usr/src/uts/common/sys/syscall.h
@@ -24,6 +24,7 @@
* Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
* Copyright (c) 2015, Joyent, Inc. All rights reserved.
+ * Copyright 2020 Oxide Computer Company
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
@@ -168,38 +169,38 @@ extern "C" {
#define SYS_tasksys 70
/*
* subcodes:
- * settaskid(...) :: tasksys(0, ...)
- * gettaskid(...) :: tasksys(1, ...)
- * getprojid(...) :: tasksys(2, ...)
+ * settaskid(...) :: tasksys(0, ...)
+ * gettaskid(...) :: tasksys(1, ...)
+ * getprojid(...) :: tasksys(2, ...)
*/
#define SYS_acctctl 71
#define SYS_exacctsys 72
/*
* subcodes:
- * getacct(...) :: exacct(0, ...)
- * putacct(...) :: exacct(1, ...)
- * wracct(...) :: exacct(2, ...)
+ * getacct(...) :: exacct(0, ...)
+ * putacct(...) :: exacct(1, ...)
+ * wracct(...) :: exacct(2, ...)
*/
#define SYS_getpagesizes 73
/*
* subcodes:
* getpagesizes2(...) :: getpagesizes(0, ...)
- * getpagesizes(...) :: getpagesizes(1, ...) legacy
+ * getpagesizes(...) :: getpagesizes(1, ...) legacy
*/
#define SYS_rctlsys 74
/*
* subcodes:
- * getrctl(...) :: rctlsys(0, ...)
- * setrctl(...) :: rctlsys(1, ...)
- * rctllist(...) :: rctlsys(2, ...)
- * rctlctl(...) :: rctlsys(3, ...)
+ * getrctl(...) :: rctlsys(0, ...)
+ * setrctl(...) :: rctlsys(1, ...)
+ * rctllist(...) :: rctlsys(2, ...)
+ * rctlctl(...) :: rctlsys(3, ...)
*/
#define SYS_sidsys 75
/*
* subcodes:
- * allocids(...) :: sidsys(0, ...)
- * idmap_reg(...) :: sidsys(1, ...)
- * idmap_unreg(...) :: sidsys(2, ...)
+ * allocids(...) :: sidsys(0, ...)
+ * idmap_reg(...) :: sidsys(1, ...)
+ * idmap_unreg(...) :: sidsys(2, ...)
*/
#define SYS_lwp_park 77
/*
@@ -213,8 +214,8 @@ extern "C" {
#define SYS_sendfilev 78
/*
* subcodes :
- * sendfilev() :: sendfilev(0, ...)
- * sendfilev64() :: sendfilev(1, ...)
+ * sendfilev() :: sendfilev(0, ...)
+ * sendfilev64() :: sendfilev(1, ...)
*/
#define SYS_rmdir 79
#define SYS_mkdir 80
@@ -222,11 +223,11 @@ extern "C" {
#define SYS_privsys 82
/*
* subcodes:
- * setppriv(...) :: privsys(0, ...)
- * getppriv(...) :: privsys(1, ...)
- * getimplinfo(...) :: privsys(2, ...)
- * setpflags(...) :: privsys(3, ...)
- * getpflags(...) :: privsys(4, ...)
+ * setppriv(...) :: privsys(0, ...)
+ * getppriv(...) :: privsys(1, ...)
+ * getimplinfo(...) :: privsys(2, ...)
+ * setpflags(...) :: privsys(3, ...)
+ * getpflags(...) :: privsys(4, ...)
* issetugid(); :: privsys(5)
*/
#define SYS_ucredsys 83
@@ -297,6 +298,7 @@ extern "C" {
#define SYS_writev 122
#define SYS_preadv 123
#define SYS_pwritev 124
+#define SYS_upanic 125
#define SYS_getrandom 126
#define SYS_mmapobj 127
#define SYS_setrlimit 128
@@ -368,7 +370,7 @@ extern "C" {
#define SYS_meminfosys SYS_lgrpsys
/*
* subcodes:
- * meminfo(...) :: meminfosys(MISYS_MEMINFO, ...)
+ * meminfo(...) :: meminfosys(MISYS_MEMINFO, ...)
*/
#define SYS_rusagesys 181
/*