summaryrefslogtreecommitdiff
path: root/usr/src/lib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libc')
-rw-r--r--usr/src/lib/libc/port/mapfile-vers4
-rw-r--r--usr/src/lib/libc/port/sys/epoll.c8
-rw-r--r--usr/src/lib/libc/sparcv9/Makefile.com3
3 files changed, 13 insertions, 2 deletions
diff --git a/usr/src/lib/libc/port/mapfile-vers b/usr/src/lib/libc/port/mapfile-vers
index eb81629318..29af604724 100644
--- a/usr/src/lib/libc/port/mapfile-vers
+++ b/usr/src/lib/libc/port/mapfile-vers
@@ -3367,6 +3367,10 @@ $if sparc32
__ucmpdi2;
$endif
+$if sparcv9
+ __multi3;
+$endif
+
$if _x86
_D_cplx_lr_div;
_D_cplx_lr_div_ix;
diff --git a/usr/src/lib/libc/port/sys/epoll.c b/usr/src/lib/libc/port/sys/epoll.c
index e510b0b247..230860d391 100644
--- a/usr/src/lib/libc/port/sys/epoll.c
+++ b/usr/src/lib/libc/port/sys/epoll.c
@@ -11,6 +11,7 @@
/*
* Copyright 2017 Joyent, Inc.
+ * Copyright 2020 Oxide Computer Company
*/
#include <sys/types.h>
@@ -56,7 +57,7 @@
* Events that we ignore entirely. They can be set in events, but they will
* never be returned.
*/
-#define EPOLLIGNORED (EPOLLMSG | EPOLLWAKEUP)
+#define EPOLLIGNORED (EPOLLMSG | EPOLLWAKEUP | EPOLLEXCLUSIVE)
/*
* Events that we swizzle into other bit positions.
@@ -140,6 +141,11 @@ epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
break;
case EPOLL_CTL_MOD:
+ /* EPOLLEXCLUSIVE is prohibited for modify operations */
+ if ((event->events & EPOLLEXCLUSIVE) != 0) {
+ errno = EINVAL;
+ return (-1);
+ }
/*
* In the modify case, we pass down two events: one to
* remove the event and another to add it back.
diff --git a/usr/src/lib/libc/sparcv9/Makefile.com b/usr/src/lib/libc/sparcv9/Makefile.com
index 2a1dc8d0cd..0a826826ee 100644
--- a/usr/src/lib/libc/sparcv9/Makefile.com
+++ b/usr/src/lib/libc/sparcv9/Makefile.com
@@ -135,7 +135,8 @@ COMOBJS= \
strtol.o \
strtoul.o \
strtoll.o \
- strtoull.o
+ strtoull.o \
+ multi3.o
GENOBJS= \
_getsp.o \