svn commit: r314270 - in projects/clang400-import: contrib/netbsd-tests/lib/librt include lib/libc/gen lib/libc/include lib/libcam lib/libefivar rescue/rescue sbin/ifconfig sbin/nvmecontrol share/m...
Dimitry Andric
dim at FreeBSD.org
Sat Feb 25 15:04:23 UTC 2017
Author: dim
Date: Sat Feb 25 15:04:19 2017
New Revision: 314270
URL: https://svnweb.freebsd.org/changeset/base/314270
Log:
Merge ^/head r314178 through r314269.
Added:
projects/clang400-import/sys/dev/iwm/if_iwm_fw.c
- copied unchanged from r314269, head/sys/dev/iwm/if_iwm_fw.c
projects/clang400-import/sys/dev/iwm/if_iwm_fw.h
- copied unchanged from r314269, head/sys/dev/iwm/if_iwm_fw.h
Deleted:
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/sys/gfs.h
Modified:
projects/clang400-import/contrib/netbsd-tests/lib/librt/t_sem.c
projects/clang400-import/include/semaphore.h
projects/clang400-import/lib/libc/gen/Makefile.inc
projects/clang400-import/lib/libc/gen/Symbol.map
projects/clang400-import/lib/libc/gen/sem_new.c
projects/clang400-import/lib/libc/gen/sem_timedwait.3
projects/clang400-import/lib/libc/include/namespace.h
projects/clang400-import/lib/libc/include/un-namespace.h
projects/clang400-import/lib/libcam/scsi_cmdparse.c
projects/clang400-import/lib/libefivar/efivar.c
projects/clang400-import/rescue/rescue/Makefile
projects/clang400-import/sbin/ifconfig/ifieee80211.c
projects/clang400-import/sbin/nvmecontrol/logpage.c
projects/clang400-import/sbin/nvmecontrol/nvmecontrol.8
projects/clang400-import/sbin/nvmecontrol/nvmecontrol.c
projects/clang400-import/sbin/nvmecontrol/nvmecontrol.h
projects/clang400-import/share/man/man3/pthread_testcancel.3
projects/clang400-import/share/man/man4/Makefile
projects/clang400-import/sys/amd64/linux/linux_dummy.c
projects/clang400-import/sys/amd64/linux32/linux.h
projects/clang400-import/sys/amd64/linux32/linux32_dummy.c
projects/clang400-import/sys/amd64/linux32/linux32_machdep.c
projects/clang400-import/sys/arm/at91/at91sam9260.c
projects/clang400-import/sys/arm/mv/mv_pci.c
projects/clang400-import/sys/arm/nvidia/tegra_pcie.c
projects/clang400-import/sys/arm/versatile/versatile_pci.c
projects/clang400-import/sys/arm/xscale/i8134x/i81342_pci.c
projects/clang400-import/sys/arm/xscale/ixp425/ixp425_pci.c
projects/clang400-import/sys/boot/geli/pwgets.c
projects/clang400-import/sys/cam/ctl/ctl.c
projects/clang400-import/sys/cam/ctl/ctl_frontend.c
projects/clang400-import/sys/cam/ctl/ctl_private.h
projects/clang400-import/sys/cam/ctl/scsi_ctl.c
projects/clang400-import/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c
projects/clang400-import/sys/cddl/compat/opensolaris/sys/pathname.h
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
projects/clang400-import/sys/compat/linux/linux_file.c
projects/clang400-import/sys/compat/linuxkpi/common/include/linux/bitops.h
projects/clang400-import/sys/compat/linuxkpi/common/include/linux/device.h
projects/clang400-import/sys/compat/linuxkpi/common/include/linux/srcu.h
projects/clang400-import/sys/compat/linuxkpi/common/include/linux/string.h
projects/clang400-import/sys/conf/files
projects/clang400-import/sys/dev/acpica/acpi_cpu.c
projects/clang400-import/sys/dev/acpica/acpi_pcib_acpi.c
projects/clang400-import/sys/dev/hyperv/pcib/vmbus_pcib.c
projects/clang400-import/sys/dev/isp/isp_freebsd.c
projects/clang400-import/sys/dev/iwm/if_iwm.c
projects/clang400-import/sys/dev/iwm/if_iwm_debug.h
projects/clang400-import/sys/dev/iwm/if_iwmreg.h
projects/clang400-import/sys/dev/iwm/if_iwmvar.h
projects/clang400-import/sys/dev/iwn/if_iwn.c
projects/clang400-import/sys/dev/iwn/if_iwnvar.h
projects/clang400-import/sys/dev/ofw/ofwpci.c
projects/clang400-import/sys/dev/pci/pci_host_generic_fdt.c
projects/clang400-import/sys/dev/pci/pci_if.m
projects/clang400-import/sys/dev/pci/pci_pci.c
projects/clang400-import/sys/dev/pci/pcib_if.m
projects/clang400-import/sys/dev/pci/pcib_private.h
projects/clang400-import/sys/dev/uart/uart_dev_snps.c
projects/clang400-import/sys/dev/usb/storage/cfumass.c
projects/clang400-import/sys/dev/xen/pcifront/pcifront.c
projects/clang400-import/sys/fs/nfsserver/nfs_nfsdkrpc.c
projects/clang400-import/sys/i386/linux/linux_dummy.c
projects/clang400-import/sys/kern/kern_clocksource.c
projects/clang400-import/sys/kern/kern_exit.c
projects/clang400-import/sys/kern/kern_mutex.c
projects/clang400-import/sys/kern/kern_pmc.c
projects/clang400-import/sys/kern/kern_thread.c
projects/clang400-import/sys/kern/kern_umtx.c
projects/clang400-import/sys/kern/subr_trap.c
projects/clang400-import/sys/mips/adm5120/admpci.c
projects/clang400-import/sys/mips/atheros/ar71xx_pci.c
projects/clang400-import/sys/mips/atheros/ar724x_pci.c
projects/clang400-import/sys/mips/atheros/qca955x_pci.c
projects/clang400-import/sys/mips/cavium/octopci.c
projects/clang400-import/sys/mips/conf/BERI_DE4_BASE
projects/clang400-import/sys/mips/conf/BERI_DE4_SDROOT
projects/clang400-import/sys/mips/conf/BERI_SIM_BASE
projects/clang400-import/sys/mips/idt/idtpci.c
projects/clang400-import/sys/mips/malta/gt_pci.c
projects/clang400-import/sys/mips/mediatek/mtk_pcie.c
projects/clang400-import/sys/mips/nlm/xlp_pci.c
projects/clang400-import/sys/mips/rmi/xlr_pci.c
projects/clang400-import/sys/mips/rt305x/rt305x_pci.c
projects/clang400-import/sys/mips/sibyte/sb_zbpci.c
projects/clang400-import/sys/modules/iwm/Makefile
projects/clang400-import/sys/modules/zfs/Makefile
projects/clang400-import/sys/powerpc/ofw/ofw_pcib_pci.c
projects/clang400-import/sys/powerpc/powermac/cpcht.c
projects/clang400-import/sys/sparc64/pci/apb.c
projects/clang400-import/sys/sparc64/pci/fire.c
projects/clang400-import/sys/sparc64/pci/ofw_pcib.c
projects/clang400-import/sys/sparc64/pci/psycho.c
projects/clang400-import/sys/sparc64/pci/schizo.c
projects/clang400-import/sys/sys/proc.h
projects/clang400-import/sys/sys/systm.h
projects/clang400-import/sys/ufs/ffs/ffs_softdep.c
projects/clang400-import/sys/vm/vm_fault.c
projects/clang400-import/sys/x86/pci/pci_bus.c
projects/clang400-import/sys/x86/x86/mp_x86.c
projects/clang400-import/sys/x86/x86/tsc.c
projects/clang400-import/sys/x86/x86/x86_mem.c
projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc
projects/clang400-import/usr.sbin/efivar/efivar.c
projects/clang400-import/usr.sbin/syslogd/Makefile
projects/clang400-import/usr.sbin/syslogd/syslogd.c
Directory Properties:
projects/clang400-import/ (props changed)
projects/clang400-import/contrib/netbsd-tests/ (props changed)
projects/clang400-import/sys/cddl/contrib/opensolaris/ (props changed)
Modified: projects/clang400-import/contrib/netbsd-tests/lib/librt/t_sem.c
==============================================================================
--- projects/clang400-import/contrib/netbsd-tests/lib/librt/t_sem.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/contrib/netbsd-tests/lib/librt/t_sem.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -60,18 +60,24 @@ __COPYRIGHT("@(#) Copyright (c) 2008, 20
The NetBSD Foundation, inc. All rights reserved.");
__RCSID("$NetBSD: t_sem.c,v 1.3 2017/01/14 20:58:20 christos Exp $");
+#include <sys/time.h>
#include <sys/wait.h>
#include <errno.h>
#include <fcntl.h>
#include <semaphore.h>
+#include <signal.h>
#include <stdio.h>
+#include <time.h>
#include <unistd.h>
#include <atf-c.h>
#define NCHILDREN 10
+#define SEM_REQUIRE(x) \
+ ATF_REQUIRE_EQ_MSG(x, 0, "%s", strerror(errno))
+
ATF_TC_WITH_CLEANUP(basic);
ATF_TC_HEAD(basic, tc)
{
@@ -118,6 +124,7 @@ ATF_TC_HEAD(child, tc)
{
atf_tc_set_md_var(tc, "descr", "Checks using semaphores to synchronize "
"parent with multiple child processes");
+ atf_tc_set_md_var(tc, "timeout", "5");
}
ATF_TC_BODY(child, tc)
{
@@ -153,7 +160,7 @@ ATF_TC_BODY(child, tc)
}
for (i = 0; i < NCHILDREN; i++) {
- sleep(1);
+ usleep(100000);
printf("main loop %d: posting...\n", j);
ATF_REQUIRE_EQ(sem_post(sem_a), 0);
}
@@ -173,11 +180,151 @@ ATF_TC_CLEANUP(child, tc)
(void)sem_unlink("/sem_a");
}
+static inline void
+timespec_add_ms(struct timespec *ts, int ms)
+{
+ ts->tv_nsec += ms * 1000*1000;
+ if (ts->tv_nsec > 1000*1000*1000) {
+ ts->tv_sec++;
+ ts->tv_nsec -= 1000*1000*1000;
+ }
+}
+
+volatile sig_atomic_t got_sigalrm = 0;
+
+static void
+sigalrm_handler(int sig __unused)
+{
+ got_sigalrm = 1;
+}
+
+ATF_TC(timedwait);
+ATF_TC_HEAD(timedwait, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Tests sem_timedwait(3)"
+#ifdef __FreeBSD__
+ " and sem_clockwait_np(3)"
+#endif
+ );
+ atf_tc_set_md_var(tc, "timeout", "20");
+}
+ATF_TC_BODY(timedwait, tc)
+{
+ struct timespec ts;
+ sem_t sem;
+ int result;
+
+ SEM_REQUIRE(sem_init(&sem, 0, 0));
+ SEM_REQUIRE(sem_post(&sem));
+ ATF_REQUIRE_MSG(clock_gettime(CLOCK_REALTIME, &ts) == 0,
+ "%s", strerror(errno));
+ timespec_add_ms(&ts, 100);
+ SEM_REQUIRE(sem_timedwait(&sem, &ts));
+ ATF_REQUIRE_ERRNO(ETIMEDOUT, sem_timedwait(&sem, &ts));
+ ts.tv_sec--;
+ ATF_REQUIRE_ERRNO(ETIMEDOUT, sem_timedwait(&sem, &ts));
+ SEM_REQUIRE(sem_post(&sem));
+ SEM_REQUIRE(sem_timedwait(&sem, &ts));
+
+ /* timespec validation, in the past */
+ ts.tv_nsec += 1000*1000*1000;
+ ATF_REQUIRE_ERRNO(EINVAL, sem_timedwait(&sem, &ts));
+ ts.tv_nsec = -1;
+ ATF_REQUIRE_ERRNO(EINVAL, sem_timedwait(&sem, &ts));
+ /* timespec validation, in the future */
+ ATF_REQUIRE_MSG(clock_gettime(CLOCK_REALTIME, &ts) == 0,
+ "%s", strerror(errno));
+ ts.tv_sec++;
+ ts.tv_nsec = 1000*1000*1000;
+ ATF_REQUIRE_ERRNO(EINVAL, sem_timedwait(&sem, &ts));
+ ts.tv_nsec = -1;
+ ATF_REQUIRE_ERRNO(EINVAL, sem_timedwait(&sem, &ts));
+
+ /* EINTR */
+ struct sigaction act = {
+ .sa_handler = sigalrm_handler,
+ .sa_flags = 0 /* not SA_RESTART */
+ };
+ ATF_REQUIRE_MSG(sigemptyset(&act.sa_mask) == 0,
+ "%s", strerror(errno));
+ ATF_REQUIRE_MSG(sigaction(SIGALRM, &act, NULL) == 0,
+ "%s", strerror(errno));
+ struct itimerval it = {
+ .it_value.tv_usec = 50*1000
+ };
+ ATF_REQUIRE_MSG(setitimer(ITIMER_REAL, &it, NULL) == 0,
+ "%s", strerror(errno));
+ ATF_REQUIRE_MSG(clock_gettime(CLOCK_REALTIME, &ts) == 0,
+ "%s", strerror(errno));
+ timespec_add_ms(&ts, 100);
+ ATF_REQUIRE_ERRNO(EINTR, sem_timedwait(&sem, &ts));
+ ATF_REQUIRE_MSG(got_sigalrm, "did not get SIGALRM");
+
+#ifdef __FreeBSD__
+ /* CLOCK_MONOTONIC, absolute */
+ SEM_REQUIRE(sem_post(&sem));
+ ATF_REQUIRE_MSG(clock_gettime(CLOCK_MONOTONIC, &ts) == 0,
+ "%s", strerror(errno));
+ timespec_add_ms(&ts, 100);
+ SEM_REQUIRE(sem_clockwait_np(&sem, CLOCK_MONOTONIC, TIMER_ABSTIME,
+ &ts, NULL));
+ ATF_REQUIRE_ERRNO(ETIMEDOUT,
+ sem_clockwait_np(&sem, CLOCK_MONOTONIC, TIMER_ABSTIME, &ts, NULL));
+
+ /* CLOCK_MONOTONIC, relative */
+ SEM_REQUIRE(sem_post(&sem));
+ ts.tv_sec = 0;
+ ts.tv_nsec = 100*1000*1000;
+ SEM_REQUIRE(sem_clockwait_np(&sem, CLOCK_MONOTONIC, 0,
+ &ts, NULL));
+ ATF_REQUIRE_ERRNO(ETIMEDOUT,
+ sem_clockwait_np(&sem, CLOCK_MONOTONIC, 0, &ts, NULL));
+
+ /* absolute does not update remaining time on EINTR */
+ struct timespec remain = {42, 1000*1000*1000};
+ got_sigalrm = 0;
+ it.it_value.tv_usec = 50*1000;
+ ATF_REQUIRE_MSG(setitimer(ITIMER_REAL, &it, NULL) == 0,
+ "%s", strerror(errno));
+ ATF_REQUIRE_MSG(clock_gettime(CLOCK_MONOTONIC, &ts) == 0,
+ "%s", strerror(errno));
+ timespec_add_ms(&ts, 100);
+ ATF_REQUIRE_ERRNO(EINTR, sem_clockwait_np(&sem, CLOCK_MONOTONIC,
+ TIMER_ABSTIME, &ts, &remain));
+ ATF_REQUIRE_MSG(got_sigalrm, "did not get SIGALRM");
+ ATF_REQUIRE_MSG(remain.tv_sec == 42 && remain.tv_nsec == 1000*1000*1000,
+ "an absolute clockwait modified the remaining time on EINTR");
+
+ /* relative updates remaining time on EINTR */
+ remain.tv_sec = 42;
+ remain.tv_nsec = 1000*1000*1000;
+ got_sigalrm = 0;
+ it.it_value.tv_usec = 50*1000;
+ ATF_REQUIRE_MSG(setitimer(ITIMER_REAL, &it, NULL) == 0,
+ "%s", strerror(errno));
+ ts.tv_sec = 0;
+ ts.tv_nsec = 100*1000*1000;
+ ATF_REQUIRE_ERRNO(EINTR, sem_clockwait_np(&sem, CLOCK_MONOTONIC, 0, &ts,
+ &remain));
+ ATF_REQUIRE_MSG(got_sigalrm, "did not get SIGALRM");
+ /*
+ * If this nsec comparison turns out to be unreliable due to timing,
+ * it could simply check that nsec < 100 ms.
+ */
+ ATF_REQUIRE_MSG(remain.tv_sec == 0 &&
+ remain.tv_nsec >= 25*1000*1000 &&
+ remain.tv_nsec <= 75*1000*1000,
+ "the remaining time was not as expected when a relative clockwait"
+ " got EINTR" );
+#endif
+}
+
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, basic);
ATF_TP_ADD_TC(tp, child);
+ ATF_TP_ADD_TC(tp, timedwait);
return atf_no_error();
}
Modified: projects/clang400-import/include/semaphore.h
==============================================================================
--- projects/clang400-import/include/semaphore.h Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/include/semaphore.h Sat Feb 25 15:04:19 2017 (r314270)
@@ -59,6 +59,10 @@ int sem_init(sem_t *, int, unsigned int
sem_t *sem_open(const char *, int, ...);
int sem_post(sem_t *);
int sem_timedwait(sem_t * __restrict, const struct timespec * __restrict);
+#if __BSD_VISIBLE
+int sem_clockwait_np(sem_t * __restrict, __clockid_t, int,
+ const struct timespec *, struct timespec *);
+#endif
int sem_trywait(sem_t *);
int sem_unlink(const char *);
int sem_wait(sem_t *);
Modified: projects/clang400-import/lib/libc/gen/Makefile.inc
==============================================================================
--- projects/clang400-import/lib/libc/gen/Makefile.inc Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libc/gen/Makefile.inc Sat Feb 25 15:04:19 2017 (r314270)
@@ -463,6 +463,7 @@ MLINKS+=scandir.3 alphasort.3
MLINKS+=sem_open.3 sem_close.3 \
sem_open.3 sem_unlink.3
MLINKS+=sem_wait.3 sem_trywait.3
+MLINKS+=sem_timedwait.3 sem_clockwait_np.3
MLINKS+=send.2 sendmmsg.2
MLINKS+=setjmp.3 _longjmp.3 \
setjmp.3 _setjmp.3 \
Modified: projects/clang400-import/lib/libc/gen/Symbol.map
==============================================================================
--- projects/clang400-import/lib/libc/gen/Symbol.map Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libc/gen/Symbol.map Sat Feb 25 15:04:19 2017 (r314270)
@@ -415,6 +415,7 @@ FBSD_1.4 {
FBSD_1.5 {
basename;
dirname;
+ sem_clockwait_np;
};
FBSDprivate_1.0 {
Modified: projects/clang400-import/lib/libc/gen/sem_new.c
==============================================================================
--- projects/clang400-import/lib/libc/gen/sem_new.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libc/gen/sem_new.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -56,6 +56,7 @@ __weak_reference(_sem_init, sem_init);
__weak_reference(_sem_open, sem_open);
__weak_reference(_sem_post, sem_post);
__weak_reference(_sem_timedwait, sem_timedwait);
+__weak_reference(_sem_clockwait_np, sem_clockwait_np);
__weak_reference(_sem_trywait, sem_trywait);
__weak_reference(_sem_unlink, sem_unlink);
__weak_reference(_sem_wait, sem_wait);
@@ -345,23 +346,34 @@ usem_wake(struct _usem2 *sem)
}
static __inline int
-usem_wait(struct _usem2 *sem, const struct timespec *abstime)
+usem_wait(struct _usem2 *sem, clockid_t clock_id, int flags,
+ const struct timespec *rqtp, struct timespec *rmtp)
{
- struct _umtx_time *tm_p, timeout;
+ struct {
+ struct _umtx_time timeout;
+ struct timespec remain;
+ } tms;
+ void *tm_p;
size_t tm_size;
+ int retval;
- if (abstime == NULL) {
+ if (rqtp == NULL) {
tm_p = NULL;
tm_size = 0;
} else {
- timeout._clockid = CLOCK_REALTIME;
- timeout._flags = UMTX_ABSTIME;
- timeout._timeout = *abstime;
- tm_p = &timeout;
- tm_size = sizeof(timeout);
+ tms.timeout._clockid = clock_id;
+ tms.timeout._flags = (flags & TIMER_ABSTIME) ? UMTX_ABSTIME : 0;
+ tms.timeout._timeout = *rqtp;
+ tm_p = &tms;
+ tm_size = sizeof(tms);
+ }
+ retval = _umtx_op(sem, UMTX_OP_SEM2_WAIT, 0, (void *)tm_size, tm_p);
+ if (retval == -1 && errno == EINTR && (flags & TIMER_ABSTIME) == 0 &&
+ rqtp != NULL && rmtp != NULL) {
+ *rmtp = tms.remain;
}
- return _umtx_op(sem, UMTX_OP_SEM2_WAIT, 0,
- (void *)tm_size, __DECONST(void*, tm_p));
+
+ return (retval);
}
int
@@ -381,8 +393,8 @@ _sem_trywait(sem_t *sem)
}
int
-_sem_timedwait(sem_t * __restrict sem,
- const struct timespec * __restrict abstime)
+_sem_clockwait_np(sem_t * __restrict sem, clockid_t clock_id, int flags,
+ const struct timespec *rqtp, struct timespec *rmtp)
{
int val, retval;
@@ -393,7 +405,8 @@ _sem_timedwait(sem_t * __restrict sem,
_pthread_testcancel();
for (;;) {
while (USEM_COUNT(val = sem->_kern._count) > 0) {
- if (atomic_cmpset_acq_int(&sem->_kern._count, val, val - 1))
+ if (atomic_cmpset_acq_int(&sem->_kern._count, val,
+ val - 1))
return (0);
}
@@ -406,20 +419,28 @@ _sem_timedwait(sem_t * __restrict sem,
* The timeout argument is only supposed to
* be checked if the thread would have blocked.
*/
- if (abstime != NULL) {
- if (abstime->tv_nsec >= 1000000000 || abstime->tv_nsec < 0) {
+ if (rqtp != NULL) {
+ if (rqtp->tv_nsec >= 1000000000 || rqtp->tv_nsec < 0) {
errno = EINVAL;
return (-1);
}
}
_pthread_cancel_enter(1);
- retval = usem_wait(&sem->_kern, abstime);
+ retval = usem_wait(&sem->_kern, clock_id, flags, rqtp, rmtp);
_pthread_cancel_leave(0);
}
return (retval);
}
int
+_sem_timedwait(sem_t * __restrict sem,
+ const struct timespec * __restrict abstime)
+{
+ return (_sem_clockwait_np(sem, CLOCK_REALTIME, TIMER_ABSTIME, abstime,
+ NULL));
+};
+
+int
_sem_wait(sem_t *sem)
{
return _sem_timedwait(sem, NULL);
Modified: projects/clang400-import/lib/libc/gen/sem_timedwait.3
==============================================================================
--- projects/clang400-import/lib/libc/gen/sem_timedwait.3 Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libc/gen/sem_timedwait.3 Sat Feb 25 15:04:19 2017 (r314270)
@@ -34,11 +34,12 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 17, 2016
+.Dd February 23, 2017
.Dt SEM_TIMEDWAIT 3
.Os
.Sh NAME
-.Nm sem_timedwait
+.Nm sem_timedwait ,
+.Nm sem_clockwait_np
.Nd "lock a semaphore"
.Sh LIBRARY
.Lb libc
@@ -46,6 +47,8 @@
.In semaphore.h
.Ft int
.Fn sem_timedwait "sem_t * restrict sem" "const struct timespec * restrict abs_timeout"
+.Ft int
+.Fn sem_clockwait_np "sem_t * restrict sem" "clockid_t clock_id" "int flags" "const struct timespec * rqtp" "struct timespec * rmtp"
.Sh DESCRIPTION
The
.Fn sem_timedwait
@@ -77,10 +80,40 @@ clock.
The validity of the
.Fa abs_timeout
is not checked if the semaphore can be locked immediately.
-.Sh RETURN VALUES
+.Pp
The
-.Fn sem_timedwait
-function returns zero if the calling process successfully performed the
+.Fn sem_clockwait_np
+function is a more flexible variant of
+.Fn sem_timedwait .
+The
+.Fa clock_id
+parameter specifies the reference clock.
+If the
+.Fa flags
+parameter contains
+.Dv TIMER_ABSTIME ,
+then the requested timeout
+.Pq Fa rqtp
+is an absolute timeout; otherwise,
+the timeout is relative.
+If this function fails with
+.Er EINTR
+and the timeout is relative,
+a non-NULL
+.Fa rmtp
+will be updated to contain the amount of time remaining in the interval
+.Po
+the requested time minus the time actually slept
+.Pc .
+An absolute timeout has no effect on
+.Fa rmtp .
+A single structure can be used for both
+.Fa rqtp
+and
+.Fa rmtp .
+.Sh RETURN VALUES
+These
+functions return zero if the calling process successfully performed the
semaphore lock operation on the semaphore designated by
.Fa sem .
If the call was unsuccessful, the state of the semaphore is unchanged,
@@ -88,9 +121,7 @@ and the function returns a value of \-1
.Va errno
to indicate the error.
.Sh ERRORS
-The
-.Fn sem_timedwait
-function will fail if:
+These functions will fail if:
.Bl -tag -width Er
.It Bq Er EINVAL
The
@@ -114,6 +145,18 @@ The
.Fn sem_timedwait
function conforms to
.St -p1003.1-2004 .
+The
+.Fn sem_clockwait_np
+function is not specified by any standard;
+it exists only on
+.Fx
+at the time of this writing.
.Sh HISTORY
-The function first appeared in
+The
+.Fn sem_timedwait
+function first appeared in
.Fx 5.0 .
+The
+.Fn sem_clockwait_np
+function first appeared in
+.Fx 12.0 .
Modified: projects/clang400-import/lib/libc/include/namespace.h
==============================================================================
--- projects/clang400-import/lib/libc/include/namespace.h Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libc/include/namespace.h Sat Feb 25 15:04:19 2017 (r314270)
@@ -217,6 +217,7 @@
#define sem_open _sem_open
#define sem_post _sem_post
#define sem_timedwait _sem_timedwait
+#define sem_clockwait_np _sem_clockwait_np
#define sem_trywait _sem_trywait
#define sem_unlink _sem_unlink
#define sem_wait _sem_wait
Modified: projects/clang400-import/lib/libc/include/un-namespace.h
==============================================================================
--- projects/clang400-import/lib/libc/include/un-namespace.h Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libc/include/un-namespace.h Sat Feb 25 15:04:19 2017 (r314270)
@@ -198,6 +198,7 @@
#undef sem_open
#undef sem_post
#undef sem_timedwait
+#undef sem_clockwait_np
#undef sem_trywait
#undef sem_unlink
#undef sem_wait
Modified: projects/clang400-import/lib/libcam/scsi_cmdparse.c
==============================================================================
--- projects/clang400-import/lib/libcam/scsi_cmdparse.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libcam/scsi_cmdparse.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -128,14 +128,14 @@ do_buff_decode(u_int8_t *buff, size_t le
*(va_arg(*ap, int *)) = (ARG); \
assigned++; \
} \
- field_name[0] = 0; \
+ field_name[0] = '\0'; \
suppress = 0; \
} while (0)
u_char bits = 0; /* For bit fields */
int shift = 0; /* Bits already shifted out */
suppress = 0;
- field_name[0] = 0;
+ field_name[0] = '\0';
while (!done) {
switch(letter = *fmt) {
@@ -169,9 +169,9 @@ do_buff_decode(u_int8_t *buff, size_t le
fmt++;
}
- if (fmt)
+ if (*fmt != '\0')
fmt++; /* Skip '}' */
- field_name[i] = 0;
+ field_name[i] = '\0';
break;
}
@@ -255,7 +255,7 @@ do_buff_decode(u_int8_t *buff, size_t le
break;
}
if (!suppress) {
- if (arg_put)
+ if (arg_put != NULL)
(*arg_put)(puthook,
(letter == 't' ? 'b' : letter),
&buff[ind], width, field_name);
@@ -268,7 +268,7 @@ do_buff_decode(u_int8_t *buff, size_t le
for (p = dest + width - 1;
p >= dest && *p == ' ';
p--)
- *p = 0;
+ *p = '\0';
}
}
assigned++;
@@ -379,22 +379,22 @@ next_field(const char **pp, char *fmt, i
field_size = 8; /* Default to byte field type... */
*fmt = 'i';
field_width = 1; /* 1 byte wide */
- if (name)
- *name = 0;
+ if (name != NULL)
+ *name = '\0';
state = BETWEEN_FIELDS;
while (state != DONE) {
switch(state) {
case BETWEEN_FIELDS:
- if (*p == 0)
+ if (*p == '\0')
state = DONE;
else if (isspace(*p))
p++;
else if (*p == '#') {
while (*p && *p != '\n')
p++;
- if (p)
+ if (*p != '\0')
p++;
} else if (*p == '{') {
int i = 0;
@@ -410,7 +410,7 @@ next_field(const char **pp, char *fmt, i
}
if(name && i < n_name)
- name[i] = 0;
+ name[i] = '\0';
if (*p == '}')
p++;
@@ -530,7 +530,7 @@ next_field(const char **pp, char *fmt, i
if (is_error) {
*error_p = 1;
- return 0;
+ return (0);
}
*error_p = 0;
@@ -568,7 +568,7 @@ do_encode(u_char *buff, size_t vec_max,
if (suppress)
value = 0;
else
- value = arg_get ?
+ value = arg_get != NULL ?
(*arg_get)(gethook, field_name) :
va_arg(*ap, int);
}
@@ -659,9 +659,9 @@ do_encode(u_char *buff, size_t vec_max,
*used = ind;
if (error)
- return -1;
+ return (-1);
- return encoded;
+ return (encoded);
}
int
@@ -672,8 +672,8 @@ csio_decode(struct ccb_scsiio *csio, con
va_start(ap, fmt);
- retval = do_buff_decode(csio->data_ptr, (size_t)csio->dxfer_len, 0, 0,
- fmt, &ap);
+ retval = do_buff_decode(csio->data_ptr, (size_t)csio->dxfer_len,
+ NULL, NULL, fmt, &ap);
va_end(ap);
@@ -705,7 +705,7 @@ buff_decode(u_int8_t *buff, size_t len,
va_start(ap, fmt);
- retval = do_buff_decode(buff, len, 0, 0, fmt, &ap);
+ retval = do_buff_decode(buff, len, NULL, NULL, fmt, &ap);
va_end(ap);
@@ -723,7 +723,7 @@ buff_decode_visit(u_int8_t *buff, size_t
* the arg_put function.
*/
if (arg_put == NULL)
- return(-1);
+ return (-1);
return (do_buff_decode(buff, len, arg_put, puthook, fmt, NULL));
}
@@ -779,20 +779,20 @@ csio_build_visit(struct ccb_scsiio *csio
int retval;
if (csio == NULL)
- return(0);
+ return (0);
/*
* We need something to encode, but we can't get it without the
* arg_get function.
*/
if (arg_get == NULL)
- return(-1);
+ return (-1);
bzero(csio, sizeof(struct ccb_scsiio));
if ((retval = do_encode(csio->cdb_io.cdb_bytes, SCSI_MAX_CDBLEN,
&cmdlen, arg_get, gethook, cmd_spec, NULL)) == -1)
- return(retval);
+ return (retval);
cam_fill_csio(csio,
/* retries */ retry_count,
@@ -805,7 +805,7 @@ csio_build_visit(struct ccb_scsiio *csio
/* cdb_len */ cmdlen,
/* timeout */ timeout ? timeout : 5000);
- return(retval);
+ return (retval);
}
int
@@ -819,7 +819,8 @@ csio_encode(struct ccb_scsiio *csio, con
va_start(ap, fmt);
- retval = do_encode(csio->data_ptr, csio->dxfer_len, 0, 0, 0, fmt, &ap);
+ retval = do_encode(csio->data_ptr, csio->dxfer_len, NULL, NULL, NULL,
+ fmt, &ap);
va_end(ap);
@@ -836,9 +837,9 @@ buff_encode_visit(u_int8_t *buff, size_t
* arg_get function.
*/
if (arg_get == NULL)
- return(-1);
+ return (-1);
- return (do_encode(buff, len, 0, arg_get, gethook, fmt, NULL));
+ return (do_encode(buff, len, NULL, arg_get, gethook, fmt, NULL));
}
int
@@ -851,8 +852,8 @@ csio_encode_visit(struct ccb_scsiio *csi
* arg_get function.
*/
if (arg_get == NULL)
- return(-1);
+ return (-1);
- return (do_encode(csio->data_ptr, csio->dxfer_len, 0, arg_get,
+ return (do_encode(csio->data_ptr, csio->dxfer_len, NULL, arg_get,
gethook, fmt, NULL));
}
Modified: projects/clang400-import/lib/libefivar/efivar.c
==============================================================================
--- projects/clang400-import/lib/libefivar/efivar.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/lib/libefivar/efivar.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -132,10 +132,7 @@ rv_to_linux_rv(int rv)
{
if (rv == 0)
rv = 1;
- else if (errno == ENOENT) {
- rv = 0;
- errno = 0;
- } else
+ else
rv = -errno;
return (rv);
}
@@ -266,6 +263,11 @@ errout:
/* XXX The linux interface expects name to be a static buffer -- fix or leak memory? */
done:
+ if (errno == ENOENT) {
+ errno = 0;
+ return 0;
+ }
+
return (rv_to_linux_rv(rv));
}
Modified: projects/clang400-import/rescue/rescue/Makefile
==============================================================================
--- projects/clang400-import/rescue/rescue/Makefile Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/rescue/rescue/Makefile Sat Feb 25 15:04:19 2017 (r314270)
@@ -90,7 +90,7 @@ CRUNCH_SUPPRESS_LINK_-tcsh= 1
#
CRUNCH_SRCDIRS+= sbin
CRUNCH_PROGS_sbin= badsect \
- camcontrol ccdconfig clri devfs dmesg dump \
+ camcontrol clri devfs dmesg dump \
dumpfs dumpon fsck fsck_ffs fsck_msdosfs fsdb \
fsirand gbde geom ifconfig init \
kldconfig kldload kldstat kldunload ldconfig \
@@ -98,13 +98,17 @@ CRUNCH_PROGS_sbin= badsect \
mount_msdosfs mount_nfs mount_nullfs \
mount_udf mount_unionfs newfs \
newfs_msdos nos-tun ping reboot \
- restore rcorder route routed rtquery rtsol savecore \
- spppcontrol swapon sysctl tunefs umount
+ restore rcorder route rtsol savecore \
+ shutdown spppcontrol swapon sysctl tunefs umount
.if ${MK_ATM} != "no"
CRUNCH_PROGS_sbin+= atmconfig
.endif
+.if ${MK_CCD} != "no"
+CRUNCH_PROGS_sbin+= ccdconfig
+.endif
+
.if ${MK_INET6_SUPPORT} != "no"
CRUNCH_PROGS_sbin+= ping6
.endif
@@ -112,6 +116,11 @@ CRUNCH_PROGS_sbin+= ping6
.if ${MK_IPFILTER} != "no"
CRUNCH_PROGS_sbin+= ipf
.endif
+
+.if ${MK_ROUTED} != "no"
+CRUNCH_PROGS_sbin+= routed rtquery
+.endif
+
.if ${MK_ZFS} != "no"
CRUNCH_PROGS_sbin+= zfs
CRUNCH_PROGS_sbin+= zpool
@@ -166,6 +175,7 @@ CRUNCH_ALIAS_restore= rrestore
CRUNCH_ALIAS_dump= rdump
CRUNCH_ALIAS_fsck_ffs= fsck_4.2bsd fsck_ufs
CRUNCH_ALIAS_geom= glabel gpart
+CRUNCH_ALIAS_shutdown= poweroff
# dhclient has historically been troublesome...
CRUNCH_PROGS_sbin+= dhclient
Modified: projects/clang400-import/sbin/ifconfig/ifieee80211.c
==============================================================================
--- projects/clang400-import/sbin/ifconfig/ifieee80211.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/sbin/ifconfig/ifieee80211.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -3160,6 +3160,14 @@ printwpsie(const char *tag, const u_int8
uint16_t tlv_type = BE_READ_2(ie);
uint16_t tlv_len = BE_READ_2(ie + 2);
+ /* some devices broadcast invalid WPS frames */
+ if (tlv_len > len) {
+ printf("bad frame length tlv_type=0x%02x "
+ "tlv_len=%d len=%d", tlv_type, tlv_len,
+ len);
+ break;
+ }
+
ie += 4, len -= 4;
switch (tlv_type) {
Modified: projects/clang400-import/sbin/nvmecontrol/logpage.c
==============================================================================
--- projects/clang400-import/sbin/nvmecontrol/logpage.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/sbin/nvmecontrol/logpage.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -369,7 +369,7 @@ print_intel_write_lat_log(void *buf, uin
}
/*
- * Table 19. 5.4 SMART Attributes
+ * Table 19. 5.4 SMART Attributes. Samsung also implements this and some extra data not documented.
*/
static void
print_intel_add_smart(void *buf, uint32_t size __unused)
@@ -714,13 +714,13 @@ print_hgst_info_temp_history(void *buf,
printf(" %-30s: %d C\n", "Minimum Temperature", *walker++);
min = le32dec(walker);
walker += 4;
- printf(" %-30s: %d:%02d:00\n", "Max Temperture Time", min / 60, min % 60);
+ printf(" %-30s: %d:%02d:00\n", "Max Temperature Time", min / 60, min % 60);
min = le32dec(walker);
walker += 4;
- printf(" %-30s: %d:%02d:00\n", "Over Temperture Duration", min / 60, min % 60);
+ printf(" %-30s: %d:%02d:00\n", "Over Temperature Duration", min / 60, min % 60);
min = le32dec(walker);
walker += 4;
- printf(" %-30s: %d:%02d:00\n", "Min Temperture Time", min / 60, min % 60);
+ printf(" %-30s: %d:%02d:00\n", "Min Temperature Time", min / 60, min % 60);
}
static void
@@ -835,34 +835,39 @@ print_hgst_info_log(void *buf, uint32_t
/*
* Table of log page printer / sizing.
*
- * This includes Intel specific pages that are widely implemented. Not
- * sure how best to switch between different vendors.
+ * This includes Intel specific pages that are widely implemented.
+ * Make sure you keep all the pages of one vendor together so -v help
+ * lists all the vendors pages.
*/
static struct logpage_function {
uint8_t log_page;
const char *vendor;
+ const char *name;
print_fn_t print_fn;
size_t size;
} logfuncs[] = {
- {NVME_LOG_ERROR, NULL, print_log_error,
- 0},
- {NVME_LOG_HEALTH_INFORMATION, NULL, print_log_health,
- sizeof(struct nvme_health_information_page)},
- {NVME_LOG_FIRMWARE_SLOT, NULL, print_log_firmware,
- sizeof(struct nvme_firmware_page)},
- {HGST_INFO_LOG, "hgst", print_hgst_info_log,
- DEFAULT_SIZE},
- {HGST_INFO_LOG, "wdc", print_hgst_info_log,
- DEFAULT_SIZE},
- {INTEL_LOG_TEMP_STATS, "intel", print_intel_temp_stats,
- sizeof(struct intel_log_temp_stats)},
- {INTEL_LOG_READ_LAT_LOG, "intel", print_intel_read_lat_log,
- DEFAULT_SIZE},
- {INTEL_LOG_WRITE_LAT_LOG, "intel", print_intel_write_lat_log,
- DEFAULT_SIZE},
- {INTEL_LOG_ADD_SMART, "intel", print_intel_add_smart,
- DEFAULT_SIZE},
- {0, NULL, NULL, 0},
+ {NVME_LOG_ERROR, NULL, "Drive Error Log",
+ print_log_error, 0},
+ {NVME_LOG_HEALTH_INFORMATION, NULL, "Health/SMART Data",
+ print_log_health, sizeof(struct nvme_health_information_page)},
+ {NVME_LOG_FIRMWARE_SLOT, NULL, "Firmware Information",
+ print_log_firmware, sizeof(struct nvme_firmware_page)},
+ {HGST_INFO_LOG, "hgst", "Detailed Health/SMART",
+ print_hgst_info_log, DEFAULT_SIZE},
+ {HGST_INFO_LOG, "wds", "Detailed Health/SMART",
+ print_hgst_info_log, DEFAULT_SIZE},
+ {INTEL_LOG_TEMP_STATS, "intel", "Temperature Stats",
+ print_intel_temp_stats, sizeof(struct intel_log_temp_stats)},
+ {INTEL_LOG_READ_LAT_LOG, "intel", "Read Latencies",
+ print_intel_read_lat_log, DEFAULT_SIZE},
+ {INTEL_LOG_WRITE_LAT_LOG, "intel", "Write Latencies",
+ print_intel_write_lat_log, DEFAULT_SIZE},
+ {INTEL_LOG_ADD_SMART, "intel", "Extra Health/SMART Data",
+ print_intel_add_smart, DEFAULT_SIZE},
+ {INTEL_LOG_ADD_SMART, "samsung", "Extra Health/SMART Data",
+ print_intel_add_smart, DEFAULT_SIZE},
+
+ {0, NULL, NULL, NULL, 0},
};
static void
@@ -873,6 +878,23 @@ logpage_usage(void)
exit(1);
}
+static void
+logpage_help(void)
+{
+ struct logpage_function *f;
+ const char *v;
+
+ fprintf(stderr, "\n");
+ fprintf(stderr, "%-8s %-10s %s\n", "Page", "Vendor","Page Name");
+ fprintf(stderr, "-------- ---------- ----------\n");
+ for (f = logfuncs; f->log_page > 0; f++) {
+ v = f->vendor == NULL ? "-" : f->vendor;
+ fprintf(stderr, "0x%02x %-10s %s\n", f->log_page, v, f->name);
+ }
+
+ exit(1);
+}
+
void
logpage(int argc, char *argv[])
{
@@ -894,6 +916,9 @@ logpage(int argc, char *argv[])
binflag = true;
break;
case 'p':
+ if (strcmp(optarg, "help") == 0)
+ logpage_help();
+
/* TODO: Add human-readable ASCII page IDs */
log_page = strtol(optarg, &p, 0);
if (p != NULL && *p != '\0') {
@@ -908,6 +933,8 @@ logpage(int argc, char *argv[])
hexflag = true;
break;
case 'v':
+ if (strcmp(optarg, "help") == 0)
+ logpage_help();
vendor = optarg;
break;
}
Modified: projects/clang400-import/sbin/nvmecontrol/nvmecontrol.8
==============================================================================
--- projects/clang400-import/sbin/nvmecontrol/nvmecontrol.8 Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/sbin/nvmecontrol/nvmecontrol.8 Sat Feb 25 15:04:19 2017 (r314270)
@@ -33,7 +33,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 4, 2017
+.Dd February 24, 2017
.Dt NVMECONTROL 8
.Os
.Sh NAME
@@ -108,6 +108,15 @@ Page 0xc1 is read latency stats for inte
Page 0xc2 is write latency stats for intel.
Page 0xc5 is temperature stats for intel.
Page 0xca is advanced smart information for intel.
+.Pp
+Specifying
+.Fl p
+.Ic help
+will list all valid vendors and pages.
+.Fl x
+will print the page as hex.
+.Fl b
+will print the binary data for the page.
.Ss wdc
The various wdc command retrieve log data from the wdc/hgst drives.
The
Modified: projects/clang400-import/sbin/nvmecontrol/nvmecontrol.c
==============================================================================
--- projects/clang400-import/sbin/nvmecontrol/nvmecontrol.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/sbin/nvmecontrol/nvmecontrol.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -75,6 +75,11 @@ dispatch(int argc, char *argv[], struct
{
struct nvme_function *f = tbl;
+ if (argv[1] == NULL) {
+ gen_usage(tbl);
+ return;
+ }
+
while (f->name != NULL) {
if (strcmp(argv[1], f->name) == 0)
f->fn(argc-1, &argv[1]);
Modified: projects/clang400-import/sbin/nvmecontrol/nvmecontrol.h
==============================================================================
--- projects/clang400-import/sbin/nvmecontrol/nvmecontrol.h Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/sbin/nvmecontrol/nvmecontrol.h Sat Feb 25 15:04:19 2017 (r314270)
@@ -58,7 +58,7 @@ struct nvme_function {
" nvmecontrol reset <controller id>\n"
#define LOGPAGE_USAGE \
-" nvmecontrol logpage <-p page_id> [-x] <controller id|namespace id>\n" \
+" nvmecontrol logpage <-p page_id> [-b] [-v vendor] [-x] <controller id|namespace id>\n" \
#define FIRMWARE_USAGE \
" nvmecontrol firmware [-s slot] [-f path_to_firmware] [-a] <controller id>\n"
Modified: projects/clang400-import/share/man/man3/pthread_testcancel.3
==============================================================================
--- projects/clang400-import/share/man/man3/pthread_testcancel.3 Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/share/man/man3/pthread_testcancel.3 Sat Feb 25 15:04:19 2017 (r314270)
@@ -1,5 +1,5 @@
.\" $FreeBSD$
-.Dd August 16, 2016
+.Dd February 17, 2017
.Dt PTHREAD_TESTCANCEL 3
.Os
.Sh NAME
@@ -120,9 +120,9 @@ is
The
.Fn kevent
function is a cancellation point if it is potentially blocking,
-i.e. when the
+such as when the
.Fa nevents
-argument is non-zero.
+argument is non-zero.
.It Fn mq_receive
.It Fn mq_send
.It Fn mq_timedreceive
@@ -146,6 +146,7 @@ argument is non-zero.
.It Fn recvmsg
.It Fn select
.It Fn sem_timedwait
+.It Fn sem_clockwait_np
.It Fn sem_wait
.It Fn send
.It Fn sendmsg
Modified: projects/clang400-import/share/man/man4/Makefile
==============================================================================
--- projects/clang400-import/share/man/man4/Makefile Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/share/man/man4/Makefile Sat Feb 25 15:04:19 2017 (r314270)
@@ -104,6 +104,7 @@ MAN= aac.4 \
cfi.4 \
cfumass.4 \
ch.4 \
+ chromebook_platform.4 \
ciss.4 \
cloudabi.4 \
cm.4 \
@@ -241,6 +242,7 @@ MAN= aac.4 \
ixgbe.4 \
ixl.4 \
ixlv.4 \
+ jedec_ts.4 \
jme.4 \
joy.4 \
kbdmux.4 \
Modified: projects/clang400-import/sys/amd64/linux/linux_dummy.c
==============================================================================
--- projects/clang400-import/sys/amd64/linux/linux_dummy.c Sat Feb 25 15:00:57 2017 (r314269)
+++ projects/clang400-import/sys/amd64/linux/linux_dummy.c Sat Feb 25 15:04:19 2017 (r314270)
@@ -110,9 +110,6 @@ DUMMY(timerfd_gettime);
/* linux 2.6.27: */
DUMMY(signalfd4);
DUMMY(inotify_init1);
-/* linux 2.6.30: */
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list