Merge ^/head r340235 through r340367.

This commit is contained in:
Dimitry Andric 2018-11-12 16:41:41 +00:00
commit 9b5cb2f639
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/clang700-import/; revision=340368
711 changed files with 27059 additions and 8570 deletions

View File

@ -33,6 +33,7 @@
# targets - Print a list of supported TARGET/TARGET_ARCH pairs # targets - Print a list of supported TARGET/TARGET_ARCH pairs
# for world and kernel targets. # for world and kernel targets.
# toolchains - Build a toolchain for all world and kernel targets. # toolchains - Build a toolchain for all world and kernel targets.
# sysent - (Re)build syscall entries from syscalls.master.
# xdev - xdev-build + xdev-install for the architecture # xdev - xdev-build + xdev-install for the architecture
# specified with TARGET and TARGET_ARCH. # specified with TARGET and TARGET_ARCH.
# xdev-build - Build cross-development tools. # xdev-build - Build cross-development tools.
@ -61,9 +62,10 @@
# Most of the user-driven targets (as listed above) are implemented in # Most of the user-driven targets (as listed above) are implemented in
# Makefile.inc1. The exceptions are universe, tinderbox and targets. # Makefile.inc1. The exceptions are universe, tinderbox and targets.
# #
# If you want to build your system from source be sure that /usr/obj has # If you want to build your system from source, be sure that /usr/obj has
# at least 6GB of diskspace available. A complete 'universe' build requires # at least 6 GB of disk space available. A complete 'universe' build of
# about 100GB of space. # r340283 (2018-11) required 167 GB of space. ZFS lz4 compression
# achieved a 2.18x ratio, reducing actual space to 81 GB.
# #
# For individuals wanting to build from the sources currently on their # For individuals wanting to build from the sources currently on their
# system, the simple instructions are: # system, the simple instructions are:
@ -135,6 +137,7 @@ TGTS= all all-man buildenv buildenvvars buildkernel buildworld \
reinstallkernel reinstallkernel.debug \ reinstallkernel reinstallkernel.debug \
installworld kernel-toolchain libraries maninstall \ installworld kernel-toolchain libraries maninstall \
obj objlink showconfig tags toolchain update \ obj objlink showconfig tags toolchain update \
sysent \
_worldtmp _legacy _bootstrap-tools _cleanobj _obj \ _worldtmp _legacy _bootstrap-tools _cleanobj _obj \
_build-tools _build-metadata _cross-tools _includes _libraries \ _build-tools _build-metadata _cross-tools _includes _libraries \
build32 distribute32 install32 buildsoft distributesoft installsoft \ build32 distribute32 install32 buildsoft distributesoft installsoft \

View File

@ -1434,6 +1434,18 @@ packageworld: .PHONY
. endif . endif
.endfor .endfor
_sysent_dirs= sys/kern
_sysent_dirs+= sys/compat/freebsd32
_sysent_dirs+= sys/i386/ibcs2
_sysent_dirs+= sys/amd64/linux \
sys/amd64/linux32 \
sys/arm64/linux \
sys/i386/linux
sysent: .PHONY
.for _dir in ${_sysent_dirs}
${_+_}${MAKE} -C ${.CURDIR}/${_dir} sysent
.endfor
# #
# reinstall # reinstall
# #

View File

@ -174,6 +174,9 @@ OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_
OLD_DIRS+=usr/lib/clang/6.0.1/lib/freebsd OLD_DIRS+=usr/lib/clang/6.0.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/6.0.1/lib OLD_DIRS+=usr/lib/clang/6.0.1/lib
OLD_DIRS+=usr/lib/clang/6.0.1 OLD_DIRS+=usr/lib/clang/6.0.1
# 20181112: Cleanup old libcap_dns.
OLD_LIBS+=lib/casper/libcap_dns.so.1
OLD_LIBS+=usr/lib32/libcap_dns.so.1
# 20181030: malloc_domain(9) KPI change # 20181030: malloc_domain(9) KPI change
OLD_FILES+=share/man/man9/malloc_domain.9.gz OLD_FILES+=share/man/man9/malloc_domain.9.gz
# 20181026: joy(4) removal # 20181026: joy(4) removal

View File

@ -31,6 +31,16 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
disable the most expensive debugging functionality run disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".) "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
20181110:
The default newsyslog.conf(5) file has been changed to only include
files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if
the filenames end in '.conf' and do not begin with a '.'.
You should check the configuration files in these two directories match
this naming convention. You can verify which configuration files are
being included using the command:
$ newsyslog -Nrv
20181015: 20181015:
Ports for the DRM modules have been simplified. Now, amd64 users should Ports for the DRM modules have been simplified. Now, amd64 users should
just install the drm-kmod port. All others should install just install the drm-kmod port. All others should install

View File

@ -32,7 +32,7 @@
.\" @(#)rm.1 8.5 (Berkeley) 12/5/94 .\" @(#)rm.1 8.5 (Berkeley) 12/5/94
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd September 12, 2018 .Dd November 10, 2018
.Dt RM 1 .Dt RM 1
.Os .Os
.Sh NAME .Sh NAME
@ -42,7 +42,7 @@
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Op Fl f | i .Op Fl f | i
.Op Fl dIPRrvWx .Op Fl dIRrvWx
.Ar .Ar
.Nm unlink .Nm unlink
.Op Fl - .Op Fl -
@ -86,26 +86,9 @@ This is a far less intrusive option than
.Fl i .Fl i
yet provides almost the same level of protection against mistakes. yet provides almost the same level of protection against mistakes.
.It Fl P .It Fl P
Overwrite regular files before deleting them. This flag has no effect.
Files are overwritten three times, first with the byte pattern 0xff, It is kept only for backwards compatibility with
then 0x00, and then 0xff again, before they are deleted. .Bx 4.4 Lite2 .
Files with multiple links will not be overwritten nor deleted
and a warning will be issued.
If the
.Fl f
option is specified, files with multiple links will also be overwritten
and deleted.
No warning will be issued.
.Pp
Specifying this flag for a read only file will cause
.Nm
to generate an error message and exit.
The file will not be removed or overwritten.
.Pp
N.B.: The
.Fl P
flag is not considered a security feature
.Pq see Sx BUGS .
.It Fl R .It Fl R
Attempt to remove the file hierarchy rooted in each Attempt to remove the file hierarchy rooted in each
.Ar file .Ar file
@ -192,12 +175,6 @@ For example:
.Pp .Pp
.Dl "rm /home/user/-filename" .Dl "rm /home/user/-filename"
.Dl "rm ./-filename" .Dl "rm ./-filename"
.Pp
When
.Fl P
is specified with
.Fl f
the file will be overwritten and removed even if it has hard links.
.Sh EXAMPLES .Sh EXAMPLES
Recursively remove all files contained within the Recursively remove all files contained within the
.Pa foobar .Pa foobar
@ -227,6 +204,12 @@ Also, historical
.Bx .Bx
implementations prompted on the standard output, implementations prompted on the standard output,
not the standard error output. not the standard error output.
.Pp
The
.Fl P
option does not have any effect as of
.Fx 13
and may be removed in the future.
.Sh SEE ALSO .Sh SEE ALSO
.Xr chflags 1 , .Xr chflags 1 ,
.Xr rmdir 1 , .Xr rmdir 1 ,
@ -250,15 +233,3 @@ A
.Nm .Nm
command appeared in command appeared in
.At v1 . .At v1 .
.Sh BUGS
The
.Fl P
option assumes that the underlying storage overwrites file blocks
when data is written to an existing offset.
Several factors including the file system and its backing store could defeat
this assumption.
This includes, but is not limited to file systems that use a
Copy-On-Write strategy (e.g. ZFS or UFS when snapshots are being used), Flash
media that are using a wear leveling algorithm, or when the backing datastore
does journaling, etc.
In addition, only regular files are overwritten, other types of files are not.

View File

@ -61,7 +61,7 @@ __FBSDID("$FreeBSD$");
#include <sysexits.h> #include <sysexits.h>
#include <unistd.h> #include <unistd.h>
static int dflag, eval, fflag, iflag, Pflag, vflag, Wflag, stdin_ok; static int dflag, eval, fflag, iflag, vflag, Wflag, stdin_ok;
static int rflag, Iflag, xflag; static int rflag, Iflag, xflag;
static uid_t uid; static uid_t uid;
static volatile sig_atomic_t info; static volatile sig_atomic_t info;
@ -71,7 +71,6 @@ static int check2(char **);
static void checkdot(char **); static void checkdot(char **);
static void checkslash(char **); static void checkslash(char **);
static void rm_file(char **); static void rm_file(char **);
static int rm_overwrite(const char *, struct stat *);
static void rm_tree(char **); static void rm_tree(char **);
static void siginfo(int __unused); static void siginfo(int __unused);
static void usage(void); static void usage(void);
@ -110,7 +109,7 @@ main(int argc, char *argv[])
exit(eval); exit(eval);
} }
Pflag = rflag = xflag = 0; rflag = xflag = 0;
while ((ch = getopt(argc, argv, "dfiIPRrvWx")) != -1) while ((ch = getopt(argc, argv, "dfiIPRrvWx")) != -1)
switch(ch) { switch(ch) {
case 'd': case 'd':
@ -128,7 +127,7 @@ main(int argc, char *argv[])
Iflag = 1; Iflag = 1;
break; break;
case 'P': case 'P':
Pflag = 1; /* Compatibility no-op. */
break; break;
case 'R': case 'R':
case 'r': /* Compatibility. */ case 'r': /* Compatibility. */
@ -313,12 +312,6 @@ rm_tree(char **argv)
case FTS_F: case FTS_F:
case FTS_NSOK: case FTS_NSOK:
if (Pflag)
if (!rm_overwrite(p->fts_accpath, p->fts_info ==
FTS_NSOK ? NULL : p->fts_statp))
continue;
/* FALLTHROUGH */
default: default:
rval = unlink(p->fts_accpath); rval = unlink(p->fts_accpath);
if (rval == 0 || (fflag && errno == ENOENT)) { if (rval == 0 || (fflag && errno == ENOENT)) {
@ -389,12 +382,8 @@ rm_file(char **argv)
rval = undelete(f); rval = undelete(f);
else if (S_ISDIR(sb.st_mode)) else if (S_ISDIR(sb.st_mode))
rval = rmdir(f); rval = rmdir(f);
else { else
if (Pflag)
if (!rm_overwrite(f, &sb))
continue;
rval = unlink(f); rval = unlink(f);
}
} }
if (rval && (!fflag || errno != ENOENT)) { if (rval && (!fflag || errno != ENOENT)) {
warn("%s", f); warn("%s", f);
@ -409,84 +398,6 @@ rm_file(char **argv)
} }
} }
/*
* rm_overwrite --
* Overwrite the file 3 times with varying bit patterns.
*
* XXX
* This is a cheap way to *really* delete files. Note that only regular
* files are deleted, directories (and therefore names) will remain.
* Also, this assumes a fixed-block file system (like FFS, or a V7 or a
* System V file system). In a logging or COW file system, you'll have to
* have kernel support.
*/
static int
rm_overwrite(const char *file, struct stat *sbp)
{
struct stat sb, sb2;
struct statfs fsb;
off_t len;
int bsize, fd, wlen;
char *buf = NULL;
fd = -1;
if (sbp == NULL) {
if (lstat(file, &sb))
goto err;
sbp = &sb;
}
if (!S_ISREG(sbp->st_mode))
return (1);
if (sbp->st_nlink > 1 && !fflag) {
warnx("%s (inode %ju): not overwritten due to multiple links",
file, (uintmax_t)sbp->st_ino);
return (0);
}
if ((fd = open(file, O_WRONLY|O_NONBLOCK|O_NOFOLLOW, 0)) == -1)
goto err;
if (fstat(fd, &sb2))
goto err;
if (sb2.st_dev != sbp->st_dev || sb2.st_ino != sbp->st_ino ||
!S_ISREG(sb2.st_mode)) {
errno = EPERM;
goto err;
}
if (fstatfs(fd, &fsb) == -1)
goto err;
bsize = MAX(fsb.f_iosize, 1024);
if ((buf = malloc(bsize)) == NULL)
err(1, "%s: malloc", file);
#define PASS(byte) { \
memset(buf, byte, bsize); \
for (len = sbp->st_size; len > 0; len -= wlen) { \
wlen = len < bsize ? len : bsize; \
if (write(fd, buf, wlen) != wlen) \
goto err; \
} \
}
PASS(0xff);
if (fsync(fd) || lseek(fd, (off_t)0, SEEK_SET))
goto err;
PASS(0x00);
if (fsync(fd) || lseek(fd, (off_t)0, SEEK_SET))
goto err;
PASS(0xff);
if (!fsync(fd) && !close(fd)) {
free(buf);
return (1);
}
err: eval = 1;
if (buf)
free(buf);
if (fd != -1)
close(fd);
warn("%s", file);
return (0);
}
static int static int
check(const char *path, const char *name, struct stat *sp) check(const char *path, const char *name, struct stat *sp)
{ {
@ -511,10 +422,6 @@ check(const char *path, const char *name, struct stat *sp)
strmode(sp->st_mode, modep); strmode(sp->st_mode, modep);
if ((flagsp = fflagstostr(sp->st_flags)) == NULL) if ((flagsp = fflagstostr(sp->st_flags)) == NULL)
err(1, "fflagstostr"); err(1, "fflagstostr");
if (Pflag)
errx(1,
"%s: -P was specified, but file is not writable",
path);
(void)fprintf(stderr, "override %s%s%s/%s %s%sfor %s? ", (void)fprintf(stderr, "override %s%s%s/%s %s%sfor %s? ",
modep + 1, modep[10] == ' ' ? "" : " ", modep + 1, modep[10] == ' ' ? "" : " ",
user_from_uid(sp->st_uid, 0), user_from_uid(sp->st_uid, 0),

View File

@ -35,7 +35,7 @@ EXCEPTIONS: Code for dealing with exceptions appears in
exceptions.c. The C language doesn't include exception handling, exceptions.c. The C language doesn't include exception handling,
so I implement it using setjmp and longjmp. The global variable so I implement it using setjmp and longjmp. The global variable
exception contains the type of exception. EXERROR is raised by exception contains the type of exception. EXERROR is raised by
calling error. EXINT is an interrupt. calling error or errorwithstatus. EXINT is an interrupt.
INTERRUPTS: In an interactive shell, an interrupt will cause an INTERRUPTS: In an interactive shell, an interrupt will cause an
EXINT exception to return to the main command loop. (Exception: EXINT exception to return to the main command loop. (Exception:

View File

@ -67,7 +67,7 @@ volatile sig_atomic_t suppressint;
volatile sig_atomic_t intpending; volatile sig_atomic_t intpending;
static void exverror(int, const char *, va_list) __printf0like(2, 0) __dead2; static void verrorwithstatus(int, const char *, va_list) __printf0like(2, 0) __dead2;
/* /*
* Called to raise an exception. Since C doesn't include exceptions, we * Called to raise an exception. Since C doesn't include exceptions, we
@ -154,7 +154,7 @@ warning(const char *msg, ...)
* formatting. It then raises the error exception. * formatting. It then raises the error exception.
*/ */
static void static void
exverror(int cond, const char *msg, va_list ap) verrorwithstatus(int status, const char *msg, va_list ap)
{ {
/* /*
* An interrupt trumps an error. Certain places catch error * An interrupt trumps an error. Certain places catch error
@ -168,14 +168,17 @@ exverror(int cond, const char *msg, va_list ap)
#ifdef DEBUG #ifdef DEBUG
if (msg) if (msg)
TRACE(("exverror(%d, \"%s\") pid=%d\n", cond, msg, getpid())); TRACE(("verrorwithstatus(%d, \"%s\") pid=%d\n",
status, msg, getpid()));
else else
TRACE(("exverror(%d, NULL) pid=%d\n", cond, getpid())); TRACE(("verrorwithstatus(%d, NULL) pid=%d\n",
status, getpid()));
#endif #endif
if (msg) if (msg)
vwarning(msg, ap); vwarning(msg, ap);
flushall(); flushall();
exraise(cond); exitstatus = status;
exraise(EXERROR);
} }
@ -184,16 +187,16 @@ error(const char *msg, ...)
{ {
va_list ap; va_list ap;
va_start(ap, msg); va_start(ap, msg);
exverror(EXERROR, msg, ap); verrorwithstatus(2, msg, ap);
va_end(ap); va_end(ap);
} }
void void
exerror(int cond, const char *msg, ...) errorwithstatus(int status, const char *msg, ...)
{ {
va_list ap; va_list ap;
va_start(ap, msg); va_start(ap, msg);
exverror(cond, msg, ap); verrorwithstatus(status, msg, ap);
va_end(ap); va_end(ap);
} }

View File

@ -55,9 +55,8 @@ extern volatile sig_atomic_t exception;
/* exceptions */ /* exceptions */
#define EXINT 0 /* SIGINT received */ #define EXINT 0 /* SIGINT received */
#define EXERROR 1 /* a generic error */ #define EXERROR 1 /* a generic error with exitstatus */
#define EXEXEC 2 /* command execution failed */ #define EXEXIT 2 /* call exitshell(exitstatus) */
#define EXEXIT 3 /* call exitshell(exitstatus) */
/* /*
@ -83,7 +82,7 @@ void exraise(int) __dead2;
void onint(void) __dead2; void onint(void) __dead2;
void warning(const char *, ...) __printflike(1, 2); void warning(const char *, ...) __printflike(1, 2);
void error(const char *, ...) __printf0like(1, 2) __dead2; void error(const char *, ...) __printf0like(1, 2) __dead2;
void exerror(int, const char *, ...) __printf0like(2, 3) __dead2; void errorwithstatus(int, const char *, ...) __printf0like(2, 3) __dead2;
/* /*

View File

@ -466,13 +466,9 @@ evalredir(union node *n, int flags)
handler = savehandler; handler = savehandler;
e = exception; e = exception;
popredir(); popredir();
if (e == EXERROR || e == EXEXEC) { if (e == EXERROR && in_redirect) {
if (in_redirect) { FORCEINTON;
if (e == EXERROR) return;
exitstatus = 2;
FORCEINTON;
return;
}
} }
longjmp(handler->loc, 1); longjmp(handler->loc, 1);
} else { } else {
@ -506,7 +502,7 @@ exphere(union node *redir, struct arglist *fn)
forcelocal++; forcelocal++;
savehandler = handler; savehandler = handler;
if (setjmp(jmploc.loc)) if (setjmp(jmploc.loc))
need_longjmp = exception != EXERROR && exception != EXEXEC; need_longjmp = exception != EXERROR;
else { else {
handler = &jmploc; handler = &jmploc;
expandarg(redir->nhere.doc, fn, 0); expandarg(redir->nhere.doc, fn, 0);
@ -671,8 +667,6 @@ evalbackcmd(union node *n, struct backcmd *result)
savehandler = handler; savehandler = handler;
if (setjmp(jmploc.loc)) { if (setjmp(jmploc.loc)) {
if (exception == EXERROR) if (exception == EXERROR)
exitstatus = 2;
else if (exception == EXEXEC)
/* nothing */; /* nothing */;
else if (exception != 0) { else if (exception != 0) {
handler = savehandler; handler = savehandler;
@ -1092,8 +1086,6 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd)
e = exception; e = exception;
if (e == EXINT) if (e == EXINT)
exitstatus = SIGINT+128; exitstatus = SIGINT+128;
else if (e != EXEXEC && e != EXEXIT)
exitstatus = 2;
goto cmddone; goto cmddone;
} }
handler = &jmploc; handler = &jmploc;
@ -1142,8 +1134,7 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd)
if (cmdentry.u.index != EXECCMD) if (cmdentry.u.index != EXECCMD)
popredir(); popredir();
if (e != -1) { if (e != -1) {
if ((e != EXERROR && e != EXEXEC) if (e != EXERROR || cmdentry.special)
|| cmdentry.special)
exraise(e); exraise(e);
popfilesupto(savetopfile); popfilesupto(savetopfile);
if (flags != EV_BACKCMD) if (flags != EV_BACKCMD)

View File

@ -133,13 +133,10 @@ shellexec(char **argv, char **envp, const char *path, int idx)
} }
/* Map to POSIX errors */ /* Map to POSIX errors */
if (e == ENOENT || e == ENOTDIR) { if (e == ENOENT || e == ENOTDIR)
exitstatus = 127; errorwithstatus(127, "%s: not found", argv[0]);
exerror(EXEXEC, "%s: not found", argv[0]); else
} else { errorwithstatus(126, "%s: %s", argv[0], strerror(e));
exitstatus = 126;
exerror(EXEXEC, "%s: %s", argv[0], strerror(e));
}
} }

View File

@ -1006,7 +1006,7 @@ vforkexecshell(struct job *jp, char **argv, char **envp, const char *path, int i
if (pid == 0) { if (pid == 0) {
TRACE(("Child shell %d\n", (int)getpid())); TRACE(("Child shell %d\n", (int)getpid()));
if (setjmp(jmploc.loc)) if (setjmp(jmploc.loc))
_exit(exception == EXEXEC ? exitstatus : 2); _exit(exitstatus);
if (pip != NULL) { if (pip != NULL) {
close(pip[0]); close(pip[0]);
if (pip[1] != 1) { if (pip[1] != 1) {

View File

@ -105,15 +105,6 @@ main(int argc, char *argv[])
initcharset(); initcharset();
state = 0; state = 0;
if (setjmp(main_handler.loc)) { if (setjmp(main_handler.loc)) {
switch (exception) {
case EXERROR:
exitstatus = 2;
break;
default:
break;
}
if (state == 0 || iflag == 0 || ! rootshell || if (state == 0 || iflag == 0 || ! rootshell ||
exception == EXEXIT) exception == EXEXIT)
exitshell(exitstatus); exitshell(exitstatus);

View File

@ -243,9 +243,6 @@ ATF_TC_BODY(mbrtowc_internal, tc)
{ {
struct test *t; struct test *t;
#ifdef __FreeBSD__
atf_tc_expect_fail("ja_* locale fails");
#endif
for (t = &tests[0]; t->data != NULL; ++t) for (t = &tests[0]; t->data != NULL; ++t)
h_ctype2(t, false); h_ctype2(t, false);
} }

View File

@ -130,7 +130,7 @@ VIKEYS const vikeys [MAXVIKEY + 1] = {
/* 034 ^\ */ /* 034 ^\ */
{v_exmode, 0, {v_exmode, 0,
"^\\", "^\\",
" ^\\ switch to ex mode"}, "^\\ switch to ex mode"},
/* 035 ^] */ /* 035 ^] */
{v_tagpush, V_ABS|V_KEYW|VM_RCM_SET, {v_tagpush, V_ABS|V_KEYW|VM_RCM_SET,
"^]", "^]",

View File

@ -741,7 +741,7 @@ capdns_setup(void)
if (capdnsloc == NULL) if (capdnsloc == NULL)
error("unable to open system.dns service"); error("unable to open system.dns service");
/* Limit system.dns to reverse DNS lookups. */ /* Limit system.dns to reverse DNS lookups. */
types[0] = "ADDR"; types[0] = "ADDR2NAME";
if (cap_dns_type_limit(capdnsloc, types, 1) < 0) if (cap_dns_type_limit(capdnsloc, types, 1) < 0)
error("unable to limit access to system.dns service"); error("unable to limit access to system.dns service");
families[0] = AF_INET; families[0] = AF_INET;

View File

@ -523,7 +523,7 @@ main(int argc, char **argv)
int sump = 0; int sump = 0;
int sockerrno; int sockerrno;
#ifdef WITH_CASPER #ifdef WITH_CASPER
const char *types[] = { "NAME", "ADDR" }; const char *types[] = { "NAME2ADDR", "ADDR2NAME" };
int families[1]; int families[1];
cap_channel_t *casper; cap_channel_t *casper;
#endif #endif

View File

@ -710,7 +710,7 @@ SRCS_MIN+= ProfileData/InstrProfWriter.cpp
SRCS_MIN+= ProfileData/ProfileSummaryBuilder.cpp SRCS_MIN+= ProfileData/ProfileSummaryBuilder.cpp
SRCS_MIN+= ProfileData/SampleProf.cpp SRCS_MIN+= ProfileData/SampleProf.cpp
SRCS_MIN+= ProfileData/SampleProfReader.cpp SRCS_MIN+= ProfileData/SampleProfReader.cpp
SRCS_EXT+= ProfileData/SampleProfWriter.cpp SRCS_MIN+= ProfileData/SampleProfWriter.cpp
SRCS_MIN+= Support/APFloat.cpp SRCS_MIN+= Support/APFloat.cpp
SRCS_MIN+= Support/APInt.cpp SRCS_MIN+= Support/APInt.cpp
SRCS_MIN+= Support/APSInt.cpp SRCS_MIN+= Support/APSInt.cpp

View File

@ -922,6 +922,21 @@ be_set_nextboot(libbe_handle_t *lbh, nvlist_t *config, uint64_t pool_guid,
return (0); return (0);
} }
/*
* Deactivate old BE dataset; currently just sets canmount=noauto
*/
static int
be_deactivate(libbe_handle_t *lbh, const char *ds)
{
zfs_handle_t *zfs;
if ((zfs = zfs_open(lbh->lzh, ds, ZFS_TYPE_DATASET)) == NULL)
return (1);
if (zfs_prop_set(zfs, "canmount", "noauto") != 0)
return (1);
zfs_close(zfs);
return (0);
}
int int
be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary) be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary)
@ -961,6 +976,9 @@ be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary)
return (be_set_nextboot(lbh, vdevs, pool_guid, buf)); return (be_set_nextboot(lbh, vdevs, pool_guid, buf));
} else { } else {
if (be_deactivate(lbh, lbh->bootfs) != 0)
return (-1);
/* Obtain bootenv zpool */ /* Obtain bootenv zpool */
err = zpool_set_prop(lbh->active_phandle, "bootfs", be_path); err = zpool_set_prop(lbh->active_phandle, "bootfs", be_path);
if (err) if (err)

View File

@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$");
#include "../iconv/citrus_hash.h" #include "../iconv/citrus_hash.h"
#include "../iconv/citrus_module.h" #include "../iconv/citrus_module.h"
#include "../iconv/citrus_iconv.h" #include "../iconv/citrus_iconv.h"
#include "xlocale_private.h" #include "mblocal.h"
typedef struct { typedef struct {
bool initialized; bool initialized;
@ -65,7 +65,7 @@ cXXrtomb_l(char * __restrict s, charXX_t c, mbstate_t * __restrict ps,
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->cXXrtomb; ps = &(XLOCALE_CTYPE(locale)->cXXrtomb);
cs = (_ConversionState *)ps; cs = (_ConversionState *)ps;
handle = &cs->iconv; handle = &cs->iconv;

View File

@ -47,10 +47,11 @@ mblen_l(const char *s, size_t n, locale_t locale)
if (s == NULL) { if (s == NULL) {
/* No support for state dependent encodings. */ /* No support for state dependent encodings. */
locale->mblen = initial; XLOCALE_CTYPE(locale)->mblen = initial;
return (0); return (0);
} }
rval = XLOCALE_CTYPE(locale)->__mbrtowc(NULL, s, n, &locale->mblen); rval = XLOCALE_CTYPE(locale)->__mbrtowc(NULL, s, n,
&(XLOCALE_CTYPE(locale)->mblen));
if (rval == (size_t)-1 || rval == (size_t)-2) if (rval == (size_t)-1 || rval == (size_t)-2)
return (-1); return (-1);
return ((int)rval); return ((int)rval);

View File

@ -60,6 +60,34 @@ struct xlocale_ctype {
size_t, size_t, mbstate_t * __restrict); size_t, size_t, mbstate_t * __restrict);
int __mb_cur_max; int __mb_cur_max;
int __mb_sb_limit; int __mb_sb_limit;
/** Persistent state used by mblen() calls. */
__mbstate_t mblen;
/** Persistent state used by mbrlen() calls. */
__mbstate_t mbrlen;
/** Persistent state used by mbrtoc16() calls. */
__mbstate_t mbrtoc16;
/** Persistent state used by mbrtoc32() calls. */
__mbstate_t mbrtoc32;
/** Persistent state used by mbrtowc() calls. */
__mbstate_t mbrtowc;
/** Persistent state used by mbsnrtowcs() calls. */
__mbstate_t mbsnrtowcs;
/** Persistent state used by mbsrtowcs() calls. */
__mbstate_t mbsrtowcs;
/** Persistent state used by mbtowc() calls. */
__mbstate_t mbtowc;
/** Persistent state used by c16rtomb() calls. */
__mbstate_t c16rtomb;
/** Persistent state used by c32rtomb() calls. */
__mbstate_t c32rtomb;
/** Persistent state used by wcrtomb() calls. */
__mbstate_t wcrtomb;
/** Persistent state used by wcsnrtombs() calls. */
__mbstate_t wcsnrtombs;
/** Persistent state used by wcsrtombs() calls. */
__mbstate_t wcsrtombs;
/** Persistent state used by wctomb() calls. */
__mbstate_t wctomb;
}; };
#define XLOCALE_CTYPE(x) ((struct xlocale_ctype*)(x)->components[XLC_CTYPE]) #define XLOCALE_CTYPE(x) ((struct xlocale_ctype*)(x)->components[XLC_CTYPE])
extern struct xlocale_ctype __xlocale_global_ctype; extern struct xlocale_ctype __xlocale_global_ctype;

View File

@ -42,7 +42,7 @@ mbrlen_l(const char * __restrict s, size_t n, mbstate_t * __restrict ps, locale_
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->mbrlen; ps = &(XLOCALE_CTYPE(locale)->mbrlen);
return (XLOCALE_CTYPE(locale)->__mbrtowc(NULL, s, n, ps)); return (XLOCALE_CTYPE(locale)->__mbrtowc(NULL, s, n, ps));
} }

View File

@ -41,7 +41,7 @@ __FBSDID("$FreeBSD$");
#include "../iconv/citrus_hash.h" #include "../iconv/citrus_hash.h"
#include "../iconv/citrus_module.h" #include "../iconv/citrus_module.h"
#include "../iconv/citrus_iconv.h" #include "../iconv/citrus_iconv.h"
#include "xlocale_private.h" #include "mblocal.h"
typedef struct { typedef struct {
bool initialized; bool initialized;
@ -68,7 +68,7 @@ mbrtocXX_l(charXX_t * __restrict pc, const char * __restrict s, size_t n,
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->mbrtocXX; ps = &(XLOCALE_CTYPE(locale)->mbrtocXX);
cs = (_ConversionState *)ps; cs = (_ConversionState *)ps;
handle = &cs->iconv; handle = &cs->iconv;

View File

@ -43,7 +43,7 @@ mbrtowc_l(wchar_t * __restrict pwc, const char * __restrict s,
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->mbrtowc; ps = &(XLOCALE_CTYPE(locale)->mbrtowc);
return (XLOCALE_CTYPE(locale)->__mbrtowc(pwc, s, n, ps)); return (XLOCALE_CTYPE(locale)->__mbrtowc(pwc, s, n, ps));
} }

View File

@ -48,7 +48,7 @@ mbsnrtowcs_l(wchar_t * __restrict dst, const char ** __restrict src,
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->mbsnrtowcs; ps = &(XLOCALE_CTYPE(locale)->mbsnrtowcs);
return (XLOCALE_CTYPE(locale)->__mbsnrtowcs(dst, src, nms, len, ps)); return (XLOCALE_CTYPE(locale)->__mbsnrtowcs(dst, src, nms, len, ps));
} }
size_t size_t

View File

@ -46,7 +46,7 @@ mbsrtowcs_l(wchar_t * __restrict dst, const char ** __restrict src, size_t len,
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->mbsrtowcs; ps = &(XLOCALE_CTYPE(locale)->mbsrtowcs);
return (XLOCALE_CTYPE(locale)->__mbsnrtowcs(dst, src, SIZE_T_MAX, len, ps)); return (XLOCALE_CTYPE(locale)->__mbsnrtowcs(dst, src, SIZE_T_MAX, len, ps));
} }
size_t size_t

View File

@ -48,10 +48,11 @@ mbtowc_l(wchar_t * __restrict pwc, const char * __restrict s, size_t n, locale_t
if (s == NULL) { if (s == NULL) {
/* No support for state dependent encodings. */ /* No support for state dependent encodings. */
locale->mbtowc = initial; XLOCALE_CTYPE(locale)->mbtowc = initial;
return (0); return (0);
} }
rval = XLOCALE_CTYPE(locale)->__mbrtowc(pwc, s, n, &locale->mbtowc); rval = XLOCALE_CTYPE(locale)->__mbrtowc(pwc, s, n,
&(XLOCALE_CTYPE(locale)->mbtowc));
switch (rval) { switch (rval) {
case (size_t)-2: case (size_t)-2:
errno = EILSEQ; errno = EILSEQ;

View File

@ -160,6 +160,21 @@ __setrunelocale(struct xlocale_ctype *l, const char *encoding)
if (ret == 0) { if (ret == 0) {
/* Free the old runes if it exists. */ /* Free the old runes if it exists. */
free_runes(saved.runes); free_runes(saved.runes);
/* Reset the mbstates */
memset(&l->c16rtomb, 0, sizeof(l->c16rtomb));
memset(&l->c32rtomb, 0, sizeof(l->c32rtomb));
memset(&l->mblen, 0, sizeof(l->mblen));
memset(&l->mbrlen, 0, sizeof(l->mbrlen));
memset(&l->mbrtoc16, 0, sizeof(l->mbrtoc16));
memset(&l->mbrtoc32, 0, sizeof(l->mbrtoc32));
memset(&l->mbrtowc, 0, sizeof(l->mbrtowc));
memset(&l->mbsnrtowcs, 0, sizeof(l->mbsnrtowcs));
memset(&l->mbsrtowcs, 0, sizeof(l->mbsrtowcs));
memset(&l->mbtowc, 0, sizeof(l->mbtowc));
memset(&l->wcrtomb, 0, sizeof(l->wcrtomb));
memset(&l->wcsnrtombs, 0, sizeof(l->wcsnrtombs));
memset(&l->wcsrtombs, 0, sizeof(l->wcsrtombs));
memset(&l->wctomb, 0, sizeof(l->wctomb));
} else { } else {
/* Restore the saved version if this failed. */ /* Restore the saved version if this failed. */
memcpy(l, &saved, sizeof(struct xlocale_ctype)); memcpy(l, &saved, sizeof(struct xlocale_ctype));

View File

@ -43,7 +43,7 @@ wcrtomb_l(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps,
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->wcrtomb; ps = &(XLOCALE_CTYPE(locale)->wcrtomb);
return (XLOCALE_CTYPE(locale)->__wcrtomb(s, wc, ps)); return (XLOCALE_CTYPE(locale)->__wcrtomb(s, wc, ps));
} }

View File

@ -48,7 +48,7 @@ wcsnrtombs_l(char * __restrict dst, const wchar_t ** __restrict src, size_t nwc,
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->wcsnrtombs; ps = &(XLOCALE_CTYPE(locale)->wcsnrtombs);
return (XLOCALE_CTYPE(locale)->__wcsnrtombs(dst, src, nwc, len, ps)); return (XLOCALE_CTYPE(locale)->__wcsnrtombs(dst, src, nwc, len, ps));
} }
size_t size_t

View File

@ -46,7 +46,7 @@ wcsrtombs_l(char * __restrict dst, const wchar_t ** __restrict src, size_t len,
{ {
FIX_LOCALE(locale); FIX_LOCALE(locale);
if (ps == NULL) if (ps == NULL)
ps = &locale->wcsrtombs; ps = &(XLOCALE_CTYPE(locale)->wcsrtombs);
return (XLOCALE_CTYPE(locale)->__wcsnrtombs(dst, src, SIZE_T_MAX, len, ps)); return (XLOCALE_CTYPE(locale)->__wcsnrtombs(dst, src, SIZE_T_MAX, len, ps));
} }

View File

@ -47,10 +47,11 @@ wctomb_l(char *s, wchar_t wchar, locale_t locale)
if (s == NULL) { if (s == NULL) {
/* No support for state dependent encodings. */ /* No support for state dependent encodings. */
locale->wctomb = initial; XLOCALE_CTYPE(locale)->wctomb = initial;
return (0); return (0);
} }
if ((rval = XLOCALE_CTYPE(locale)->__wcrtomb(s, wchar, &locale->wctomb)) == (size_t)-1) if ((rval = XLOCALE_CTYPE(locale)->__wcrtomb(s, wchar,
&(XLOCALE_CTYPE(locale)->wctomb))) == (size_t)-1)
return (-1); return (-1);
return ((int)rval); return ((int)rval);
} }

View File

@ -128,34 +128,6 @@ struct _xlocale {
int using_messages_locale; int using_messages_locale;
/** The structure to be returned from localeconv_l() for this locale. */ /** The structure to be returned from localeconv_l() for this locale. */
struct lconv lconv; struct lconv lconv;
/** Persistent state used by mblen() calls. */
__mbstate_t mblen;
/** Persistent state used by mbrlen() calls. */
__mbstate_t mbrlen;
/** Persistent state used by mbrtoc16() calls. */
__mbstate_t mbrtoc16;
/** Persistent state used by mbrtoc32() calls. */
__mbstate_t mbrtoc32;
/** Persistent state used by mbrtowc() calls. */
__mbstate_t mbrtowc;
/** Persistent state used by mbsnrtowcs() calls. */
__mbstate_t mbsnrtowcs;
/** Persistent state used by mbsrtowcs() calls. */
__mbstate_t mbsrtowcs;
/** Persistent state used by mbtowc() calls. */
__mbstate_t mbtowc;
/** Persistent state used by c16rtomb() calls. */
__mbstate_t c16rtomb;
/** Persistent state used by c32rtomb() calls. */
__mbstate_t c32rtomb;
/** Persistent state used by wcrtomb() calls. */
__mbstate_t wcrtomb;
/** Persistent state used by wcsnrtombs() calls. */
__mbstate_t wcsnrtombs;
/** Persistent state used by wcsrtombs() calls. */
__mbstate_t wcsrtombs;
/** Persistent state used by wctomb() calls. */
__mbstate_t wctomb;
/** Buffer used by nl_langinfo_l() */ /** Buffer used by nl_langinfo_l() */
char *csym; char *csym;
}; };

View File

@ -335,6 +335,7 @@ static int
nss_configure(void) nss_configure(void)
{ {
static time_t confmod; static time_t confmod;
static int already_initialized = 0;
struct stat statbuf; struct stat statbuf;
int result, isthreaded; int result, isthreaded;
const char *path; const char *path;
@ -352,6 +353,16 @@ nss_configure(void)
if (path == NULL) if (path == NULL)
#endif #endif
path = _PATH_NS_CONF; path = _PATH_NS_CONF;
#ifndef NS_REREAD_CONF
/*
* Define NS_REREAD_CONF to have nsswitch notice changes
* to nsswitch.conf(5) during runtime. This involves calling
* stat(2) every time, which can result in performance hit.
*/
if (already_initialized)
return (0);
already_initialized = 1;
#endif /* NS_REREAD_CONF */
if (stat(path, &statbuf) != 0) if (stat(path, &statbuf) != 0)
return (0); return (0);
if (statbuf.st_mtime <= confmod) if (statbuf.st_mtime <= confmod)

View File

@ -28,7 +28,7 @@
.\" @(#)access.2 8.2 (Berkeley) 4/1/94 .\" @(#)access.2 8.2 (Berkeley) 4/1/94
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt ACCESS 2 .Dt ACCESS 2
.Os .Os
.Sh NAME .Sh NAME
@ -121,7 +121,12 @@ The checks for accessibility are performed using the effective user and group
IDs instead of the real user and group ID as required in a call to IDs instead of the real user and group ID as required in a call to
.Fn access . .Fn access .
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only operate on files and directories below the starting directory. Only operate on files and directories below the topping directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Pp .Pp
Even if a process's real or effective user has appropriate privileges Even if a process's real or effective user has appropriate privileges
@ -198,14 +203,23 @@ is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn faccessat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chmod 2 , .Xr chmod 2 ,

View File

@ -28,7 +28,7 @@
.\" @(#)chflags.2 8.3 (Berkeley) 5/2/95 .\" @(#)chflags.2 8.3 (Berkeley) 5/2/95
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt CHFLAGS 2 .Dt CHFLAGS 2
.Os .Os
.Sh NAME .Sh NAME
@ -96,7 +96,12 @@ If
names a symbolic link, then the flags of the symbolic link are changed. names a symbolic link, then the flags of the symbolic link are changed.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only allow to change flags for a file which is beneath of Only allow to change flags for a file which is beneath of
the starting directory. the topping directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Pp .Pp
If If
@ -306,14 +311,23 @@ The underlying file system does not support file flags, or
does not support all of the flags set in does not support all of the flags set in
.Fa flags . .Fa flags .
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn chflagsat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chflags 1 , .Xr chflags 1 ,

View File

@ -28,7 +28,7 @@
.\" @(#)chmod.2 8.1 (Berkeley) 6/4/93 .\" @(#)chmod.2 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt CHMOD 2 .Dt CHMOD 2
.Os .Os
.Sh NAME .Sh NAME
@ -103,7 +103,12 @@ If
names a symbolic link, then the mode of the symbolic link is changed. names a symbolic link, then the mode of the symbolic link is changed.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only allow to change permissions of a file which is beneath of Only allow to change permissions of a file which is beneath of
the starting directory. the topping directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Pp .Pp
If If
@ -289,14 +294,23 @@ is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn fchmodat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chmod 1 , .Xr chmod 1 ,

View File

@ -28,7 +28,7 @@
.\" @(#)chown.2 8.4 (Berkeley) 4/19/94 .\" @(#)chown.2 8.4 (Berkeley) 4/19/94
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd Octover 20, 2018 .Dd November 11, 2018
.Dt CHOWN 2 .Dt CHOWN 2
.Os .Os
.Sh NAME .Sh NAME
@ -120,7 +120,12 @@ If
names a symbolic link, ownership of the symbolic link is changed. names a symbolic link, ownership of the symbolic link is changed.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only allow to change ownership of a file which is beneath of Only allow to change ownership of a file which is beneath of
the starting directory. the topping directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Pp .Pp
If If
@ -231,14 +236,23 @@ is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn fchownat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chgrp 1 , .Xr chgrp 1 ,

View File

@ -28,7 +28,7 @@
.\" @(#)link.2 8.3 (Berkeley) 1/12/94 .\" @(#)link.2 8.3 (Berkeley) 1/12/94
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt LINK 2 .Dt LINK 2
.Os .Os
.Sh NAME .Sh NAME
@ -116,7 +116,12 @@ If
names a symbolic link, a new link for the target of the symbolic link is names a symbolic link, a new link for the target of the symbolic link is
created. created.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only allow to link to a file which is beneath of the starting directory. Only allow to link to a file which is beneath of the topping directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Pp .Pp
If If
@ -260,16 +265,25 @@ respectively, is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
The
.Dv AT_BENEATH
flag was specified but
.Fa name1 .Fa name1
is not strictly relative to the starting directory. is not strictly relative to the starting directory.
For example, For example,
.Fa name1 .Fa name1
is absolute or includes a ".." component that escapes the starting directory. is absolute or includes a ".." component that escapes
the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified. flag was provided to
.Fa linkat
and the absolute path
.Fa name1
does not have its tail fully contained under the topping directory,
or the relative path
.Fa name1
escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chflags 2 , .Xr chflags 2 ,

View File

@ -28,7 +28,7 @@
.\" @(#)open.2 8.2 (Berkeley) 11/16/93 .\" @(#)open.2 8.2 (Berkeley) 11/16/93
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt OPEN 2 .Dt OPEN 2
.Os .Os
.Sh NAME .Sh NAME
@ -75,8 +75,14 @@ function is equivalent to the
.Fn open .Fn open
function except in the case where the function except in the case where the
.Fa path .Fa path
specifies a relative path. specifies a relative path, or the
In this case the file to be opened is determined relative to the directory .Dv O_BENEATH
flag is provided.
For
.Fn openat
and relative
.Fa path ,
the file to be opened is determined relative to the directory
associated with the file descriptor associated with the file descriptor
.Fa fd .Fa fd
instead of the current working directory. instead of the current working directory.
@ -95,6 +101,26 @@ parameter, the current working directory is used
and the behavior is identical to a call to and the behavior is identical to a call to
.Fn open . .Fn open .
.Pp .Pp
When
.Fn openat
is called with an absolute
.Fa path
without the
.Dv O_BENEATH
flag, it ignores the
.Fa fd
argument.
When
.Dv O_BENEATH
is specified with an absolute
.Fa path ,
a directory passed by the
.Fa fd
argument is used as the topping point for the resolution.
See the definition of the
.Dv O_BENEATH
flag below.
.Pp
In In
.Xr capsicum 4 .Xr capsicum 4
capability mode, capability mode,
@ -109,14 +135,28 @@ must be strictly relative to a file descriptor
as defined in as defined in
.Pa sys/kern/vfs_lookup.c . .Pa sys/kern/vfs_lookup.c .
.Fa path .Fa path
must not be an absolute path and must not contain ".." components. must not be an absolute path and must not contain ".." components
which cause the path resolution to escape the directory hierarchy
starting at
.Fa fd .
Additionally, no symbolic link in Additionally, no symbolic link in
.Fa path .Fa path
may contain ".." components either. may target absolute path or contain escaping ".." components.
.Fa fd .Fa fd
must not be must not be
.Dv AT_FDCWD . .Dv AT_FDCWD .
.Pp .Pp
If the
.Dv vfs.lookup_cap_dotdot
.Xr sysctl 3
MIB is set to zero, ".." components in the paths,
used in capability mode, or with the
.Dv O_BENEATH
flag, are completely disabled.
If the
.Dv vfs.lookup_cap_dotdot_nonlocal
MIB is set to zero, ".." is not allowed if found on non-local filesystem.
.Pp
The flags specified are formed by The flags specified are formed by
.Em or Ns 'ing .Em or Ns 'ing
the following values the following values
@ -142,7 +182,7 @@ O_TTY_INIT ignored
O_DIRECTORY error if file is not a directory O_DIRECTORY error if file is not a directory
O_CLOEXEC set FD_CLOEXEC upon open O_CLOEXEC set FD_CLOEXEC upon open
O_VERIFY verify the contents of the file O_VERIFY verify the contents of the file
O_BENEATH require path to be strictly relative to starting directory O_BENEATH require path to be strictly relative to topping directory
.Ed .Ed
.Pp .Pp
Opening a file with Opening a file with
@ -273,19 +313,21 @@ been verified before operating on them.
.Dv O_BENEATH .Dv O_BENEATH
returns returns
.Er ENOTCAPABLE .Er ENOTCAPABLE
if the specified path, after resolving all symlinks and ".." references if the specified relative path, after resolving all symlinks and ".."
in it, does not reside in the directory hierarchy of children beneath references, does not reside in the directory hierarchy of
the starting directory, or is an absolute path. children beneath the topping directory.
Starting directory is the process current directory if relative Topping directory is the process current directory if relative
.Fa path .Fa path
is used for is used for
.Fn open , .Fn open ,
and the directory referenced by the and the directory referenced by the
.Fa fd .Fa fd
argument when specifying relative argument when using
.Fa path
for
.Fn openat . .Fn openat .
If the specified path is absolute,
.Dv O_BENEATH
allows arbitrary prefix that ends up at the topping directory,
after which all further resolved components must be under it.
.Pp .Pp
If successful, If successful,
.Fn open .Fn open
@ -509,9 +551,16 @@ is an absolute path,
or contained a ".." component leading to a or contained a ".." component leading to a
directory outside of the directory hierarchy specified by directory outside of the directory hierarchy specified by
.Fa fd , .Fa fd ,
and the process is in capability mode or the and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The
.Dv O_BENEATH .Dv O_BENEATH
flag was provided. flag was provided, and the absolute
.Fa path
does not have its tail fully contained under the topping directory,
or the relative
.Fa path
escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chmod 2 , .Xr chmod 2 ,

View File

@ -28,7 +28,7 @@
.\" @(#)stat.2 8.4 (Berkeley) 5/1/95 .\" @(#)stat.2 8.4 (Berkeley) 5/1/95
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt STAT 2 .Dt STAT 2
.Os .Os
.Sh NAME .Sh NAME
@ -84,11 +84,24 @@ and
.Fn lstat .Fn lstat
except when the except when the
.Fa path .Fa path
specifies a relative path. specifies a relative path, or the
In this case the status is retrieved from a file relative to .Dv AT_BENEATH
flag is provided.
For
.Fn fstatat
and relative
.Fa path ,
the status is retrieved from a file relative to
the directory associated with the file descriptor the directory associated with the file descriptor
.Fa fd .Fa fd
instead of the current working directory. instead of the current working directory.
For
.Dv AT_BENEATH
and absolute
.Fa path ,
the status is retrieved from a file specified by the
.Fa path ,
but additional permission checks are performed, see below.
.Pp .Pp
The values for the The values for the
.Fa flag .Fa flag
@ -101,7 +114,7 @@ If
.Fa path .Fa path
names a symbolic link, the status of the symbolic link is returned. names a symbolic link, the status of the symbolic link is returned.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only stat files and directories below the starting directory. Only stat files and directories below the topping directory.
See the description of the See the description of the
.Dv O_BENEATH .Dv O_BENEATH
flag in the flag in the
@ -125,6 +138,23 @@ respectively, depending on whether or not the
bit is set in bit is set in
.Fa flag . .Fa flag .
.Pp .Pp
When
.Fn fstatat
is called with an absolute
.Fa path
without the
.Dv AT_BENEATH
flag, it ignores the
.Fa fd
argument.
When
.Dv AT_BENEATH
is specified with an absolute
.Fa path ,
a directory passed by the
.Fa fd
argument is used as the topping point for the resolution.
.Pp
The The
.Fa sb .Fa sb
argument is a pointer to a argument is a pointer to a
@ -405,14 +435,23 @@ is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn fstatat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr access 2 , .Xr access 2 ,

View File

@ -28,7 +28,7 @@
.\" @(#)unlink.2 8.1 (Berkeley) 6/4/93 .\" @(#)unlink.2 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt UNLINK 2 .Dt UNLINK 2
.Os .Os
.Sh NAME .Sh NAME
@ -90,8 +90,13 @@ and
.Fa path .Fa path
as a directory, not a normal file. as a directory, not a normal file.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only unlink files and directories which are beneath of the starting Only unlink files and directories which are beneath of the topping
directory. directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Pp .Pp
If If
@ -204,14 +209,23 @@ is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn unlinkat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chflags 2 , .Xr chflags 2 ,

View File

@ -31,7 +31,7 @@
.\" @(#)utimes.2 8.1 (Berkeley) 6/4/93 .\" @(#)utimes.2 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 20, 2018 .Dd November 11, 2018
.Dt UTIMENSAT 2 .Dt UTIMENSAT 2
.Os .Os
.Sh NAME .Sh NAME
@ -148,7 +148,12 @@ By default,
changes the times of the file referenced by the symbolic link. changes the times of the file referenced by the symbolic link.
.It Dv AT_BENEATH .It Dv AT_BENEATH
Only allow to change the times of a file which is beneath of Only allow to change the times of a file which is beneath of
the starting directory. the topping directory.
See the description of the
.Dv O_BENEATH
flag in the
.Xr open 2
manual page.
.El .El
.Sh RETURN VALUES .Sh RETURN VALUES
.Rv -std .Rv -std
@ -271,14 +276,23 @@ is neither
.Dv AT_FDCWD .Dv AT_FDCWD
nor a file descriptor associated with a directory. nor a file descriptor associated with a directory.
.It Bq Er ENOTCAPABLE .It Bq Er ENOTCAPABLE
.Fa path
is an absolute path,
or contained a ".." component leading to a
directory outside of the directory hierarchy specified by
.Fa fd ,
and the process is in capability mode.
.It Bq Er ENOTCAPABLE
The The
.Dv AT_BENEATH .Dv AT_BENEATH
flag was specified but flag was provided to
.Fn utimensat ,
and the absolute
.Fa path .Fa path
is not strictly relative to the starting directory. does not have its tail fully contained under the topping directory,
For example, or the relative
.Fa path .Fa path
is absolute or includes a ".." component that escapes the starting directory. escapes it.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr chflags 2 , .Xr chflags 2 ,

View File

@ -6,7 +6,7 @@ SHLIBDIR?= /lib/casper
PACKAGE=libcasper PACKAGE=libcasper
SHLIB_MAJOR= 1 SHLIB_MAJOR= 2
INCSDIR?= ${INCLUDEDIR}/casper INCSDIR?= ${INCLUDEDIR}/casper
.if ${MK_CASPER} != "no" .if ${MK_CASPER} != "no"

View File

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd November 4, 2018 .Dd November 12, 2018
.Dt CAP_DNS 3 .Dt CAP_DNS 3
.Os .Os
.Sh NAME .Sh NAME
@ -92,9 +92,9 @@ function limits the functions allowed in the service.
The The
.Fa types .Fa types
variable can be set to variable can be set to
.Dv ADDR .Dv ADDR2NAME
or or
.Dv NAME . .Dv NAME2ADDR .
See the See the
.Sx LIMITS .Sx LIMITS
section for more details. section for more details.
@ -129,9 +129,9 @@ for that function can contain the following values and types:
The The
.Va type .Va type
can have two values: can have two values:
.Dv ADDR .Dv ADDR2NAME
or or
.Dv NAME . .Dv NAME2ADDR .
The The
.Dv ADDR .Dv ADDR
means that reverse DNS lookups are allowed with means that reverse DNS lookups are allowed with

View File

@ -474,7 +474,7 @@ dns_gethostbyname(const nvlist_t *limits, const nvlist_t *nvlin,
struct hostent *hp; struct hostent *hp;
int family; int family;
if (!dns_allowed_type(limits, "NAME")) if (!dns_allowed_type(limits, "NAME2ADDR"))
return (NO_RECOVERY); return (NO_RECOVERY);
family = (int)nvlist_get_number(nvlin, "family"); family = (int)nvlist_get_number(nvlin, "family");
@ -498,7 +498,7 @@ dns_gethostbyaddr(const nvlist_t *limits, const nvlist_t *nvlin,
size_t addrsize; size_t addrsize;
int family; int family;
if (!dns_allowed_type(limits, "ADDR")) if (!dns_allowed_type(limits, "ADDR2NAME"))
return (NO_RECOVERY); return (NO_RECOVERY);
family = (int)nvlist_get_number(nvlin, "family"); family = (int)nvlist_get_number(nvlin, "family");
@ -524,7 +524,7 @@ dns_getnameinfo(const nvlist_t *limits, const nvlist_t *nvlin, nvlist_t *nvlout)
socklen_t salen; socklen_t salen;
int error, flags; int error, flags;
if (!dns_allowed_type(limits, "ADDR")) if (!dns_allowed_type(limits, "ADDR2NAME"))
return (NO_RECOVERY); return (NO_RECOVERY);
error = 0; error = 0;
@ -617,7 +617,7 @@ dns_getaddrinfo(const nvlist_t *limits, const nvlist_t *nvlin, nvlist_t *nvlout)
unsigned int ii; unsigned int ii;
int error, family, n; int error, family, n;
if (!dns_allowed_type(limits, "NAME")) if (!dns_allowed_type(limits, "NAME2ADDR"))
return (NO_RECOVERY); return (NO_RECOVERY);
hostname = dnvlist_get_string(nvlin, "hostname", NULL); hostname = dnvlist_get_string(nvlin, "hostname", NULL);
@ -702,8 +702,8 @@ dns_limit(const nvlist_t *oldlimits, const nvlist_t *newlimits)
if (strncmp(name, "type", sizeof("type") - 1) != 0) if (strncmp(name, "type", sizeof("type") - 1) != 0)
return (EINVAL); return (EINVAL);
type = nvlist_get_string(newlimits, name); type = nvlist_get_string(newlimits, name);
if (strcmp(type, "ADDR") != 0 && if (strcmp(type, "ADDR2NAME") != 0 &&
strcmp(type, "NAME") != 0) { strcmp(type, "NAME2ADDR") != 0) {
return (EINVAL); return (EINVAL);
} }
if (!dns_allowed_type(oldlimits, type)) if (!dns_allowed_type(oldlimits, type))

View File

@ -357,8 +357,8 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET; families[0] = AF_INET;
families[1] = AF_INET6; families[1] = AF_INET6;
@ -380,12 +380,12 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;
@ -407,12 +407,12 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
types[1] = "NAME"; types[1] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;
@ -432,8 +432,8 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET; families[0] = AF_INET;
CHECK(cap_dns_family_limit(capdns, families, 1) == 0); CHECK(cap_dns_family_limit(capdns, families, 1) == 0);
@ -459,8 +459,8 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET6; families[0] = AF_INET6;
CHECK(cap_dns_family_limit(capdns, families, 1) == 0); CHECK(cap_dns_family_limit(capdns, families, 1) == 0);
@ -488,18 +488,18 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET; families[0] = AF_INET;
families[1] = AF_INET6; families[1] = AF_INET6;
CHECK(cap_dns_family_limit(capdns, families, 2) == 0); CHECK(cap_dns_family_limit(capdns, families, 2) == 0);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;
@ -525,18 +525,18 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET; families[0] = AF_INET;
families[1] = AF_INET6; families[1] = AF_INET6;
CHECK(cap_dns_family_limit(capdns, families, 2) == 0); CHECK(cap_dns_family_limit(capdns, families, 2) == 0);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET6; families[0] = AF_INET6;
@ -562,18 +562,18 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET; families[0] = AF_INET;
families[1] = AF_INET6; families[1] = AF_INET6;
CHECK(cap_dns_family_limit(capdns, families, 2) == 0); CHECK(cap_dns_family_limit(capdns, families, 2) == 0);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
types[1] = "NAME"; types[1] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;
@ -598,18 +598,18 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == 0); CHECK(cap_dns_type_limit(capdns, types, 2) == 0);
families[0] = AF_INET; families[0] = AF_INET;
families[1] = AF_INET6; families[1] = AF_INET6;
CHECK(cap_dns_family_limit(capdns, families, 2) == 0); CHECK(cap_dns_family_limit(capdns, families, 2) == 0);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
types[1] = "NAME"; types[1] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET6; families[0] = AF_INET6;
@ -630,13 +630,13 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
families[0] = AF_INET; families[0] = AF_INET;
CHECK(cap_dns_family_limit(capdns, families, 1) == 0); CHECK(cap_dns_family_limit(capdns, families, 1) == 0);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;
@ -644,7 +644,7 @@ main(void)
CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && CHECK(cap_dns_family_limit(capdns, families, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET6; families[0] = AF_INET6;
@ -665,13 +665,13 @@ main(void)
capdns = cap_clone(origcapdns); capdns = cap_clone(origcapdns);
CHECK(capdns != NULL); CHECK(capdns != NULL);
types[0] = "ADDR"; types[0] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 1) == 0); CHECK(cap_dns_type_limit(capdns, types, 1) == 0);
families[0] = AF_INET6; families[0] = AF_INET6;
CHECK(cap_dns_family_limit(capdns, families, 1) == 0); CHECK(cap_dns_family_limit(capdns, families, 1) == 0);
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && CHECK(cap_dns_type_limit(capdns, types, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;
@ -679,7 +679,7 @@ main(void)
CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && CHECK(cap_dns_family_limit(capdns, families, 2) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
types[0] = "NAME"; types[0] = "NAME2ADDR";
CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && CHECK(cap_dns_type_limit(capdns, types, 1) == -1 &&
errno == ENOTCAPABLE); errno == ENOTCAPABLE);
families[0] = AF_INET; families[0] = AF_INET;

View File

@ -1050,10 +1050,18 @@ kldload_param(const char *name)
kl = kldload(name); kl = kldload(name);
else if (strncmp(name, "allow.mount.", 12) == 0) { else if (strncmp(name, "allow.mount.", 12) == 0) {
/* Load the matching filesystem */ /* Load the matching filesystem */
kl = kldload(name + 12); const char *modname;
if (strcmp("fusefs", name + 12) == 0 ||
strcmp("nofusefs", name + 12) == 0) {
modname = "fuse";
} else {
modname = name + 12;
}
kl = kldload(modname);
if (kl < 0 && errno == ENOENT && if (kl < 0 && errno == ENOENT &&
strncmp(name + 12, "no", 2) == 0) strncmp(modname, "no", 2) == 0)
kl = kldload(name + 14); kl = kldload(modname + 2);
} else { } else {
errno = ENOENT; errno = ENOENT;
return (-1); return (-1);

View File

@ -703,6 +703,7 @@ iovctl_files="" # Config files for iovctl(8)
### Jail Configuration (see rc.conf(5) manual page) ########## ### Jail Configuration (see rc.conf(5) manual page) ##########
############################################################## ##############################################################
jail_enable="NO" # Set to NO to disable starting of any jails jail_enable="NO" # Set to NO to disable starting of any jails
jail_conf="/etc/jail.conf" # Configuration file for jail(8)
jail_confwarn="YES" # Prevent warning about obsolete per-jail configuration jail_confwarn="YES" # Prevent warning about obsolete per-jail configuration
jail_parallel_start="NO" # Start jails in the background jail_parallel_start="NO" # Start jails in the background
jail_list="" # Space separated list of names of jails jail_list="" # Space separated list of names of jails

View File

@ -21,7 +21,6 @@ config_cmd="jail_config"
console_cmd="jail_console" console_cmd="jail_console"
status_cmd="jail_status" status_cmd="jail_status"
extra_commands="config console status" extra_commands="config console status"
: ${jail_conf:=/etc/jail.conf}
: ${jail_program:=/usr/sbin/jail} : ${jail_program:=/usr/sbin/jail}
: ${jail_consolecmd:=/usr/bin/login -f root} : ${jail_consolecmd:=/usr/bin/login -f root}
: ${jail_jexec:=/usr/sbin/jexec} : ${jail_jexec:=/usr/sbin/jexec}

View File

@ -1,7 +1,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 21, 2018 .Dd November 12, 2018
.Dt IPFW 8 .Dt IPFW 8
.Os .Os
.Sh NAME .Sh NAME
@ -3495,6 +3495,15 @@ NPTv6 module translates source address when it matches this prefix.
.It Cm ext_prefix Ar ipv6_prefix .It Cm ext_prefix Ar ipv6_prefix
IPv6 prefix used in external network. IPv6 prefix used in external network.
NPTv6 module translates destination address when it matches this prefix. NPTv6 module translates destination address when it matches this prefix.
.It Cm ext_if Ar nic
The NPTv6 module will use first global IPv6 address from interface
.Ar nic
as external prefix.
It can be useful when IPv6 prefix of external network is dynamically obtained.
.Cm ext_prefix
and
.Cm ext_if
options are mutually exclusive.
.It Cm prefixlen Ar length .It Cm prefixlen Ar length
The length of specified IPv6 prefixes. It must be in range from 8 to 64. The length of specified IPv6 prefixes. It must be in range from 8 to 64.
.El .El
@ -4285,7 +4294,7 @@ In the following example per-interface firewall is created:
.Pp .Pp
The following example illustrate usage of flow tables: The following example illustrate usage of flow tables:
.Pp .Pp
.Dl "ipfw table fl create type flow:flow:src-ip,proto,dst-ip,dst-port" .Dl "ipfw table fl create type flow:src-ip,proto,dst-ip,dst-port"
.Dl "ipfw table fl add 2a02:6b8:77::88,tcp,2a02:6b8:77::99,80 11" .Dl "ipfw table fl add 2a02:6b8:77::88,tcp,2a02:6b8:77::99,80 11"
.Dl "ipfw table fl add 10.0.0.1,udp,10.0.0.2,53 12" .Dl "ipfw table fl add 10.0.0.1,udp,10.0.0.2,53 12"
.Dl ".." .Dl ".."

View File

@ -294,6 +294,7 @@ enum tokens {
TOK_INTPREFIX, TOK_INTPREFIX,
TOK_EXTPREFIX, TOK_EXTPREFIX,
TOK_PREFIXLEN, TOK_PREFIXLEN,
TOK_EXTIF,
TOK_TCPSETMSS, TOK_TCPSETMSS,

View File

@ -152,6 +152,7 @@ static struct _s_x nptv6newcmds[] = {
{ "int_prefix", TOK_INTPREFIX }, { "int_prefix", TOK_INTPREFIX },
{ "ext_prefix", TOK_EXTPREFIX }, { "ext_prefix", TOK_EXTPREFIX },
{ "prefixlen", TOK_PREFIXLEN }, { "prefixlen", TOK_PREFIXLEN },
{ "ext_if", TOK_EXTIF },
{ NULL, 0 } { NULL, 0 }
}; };
@ -214,6 +215,9 @@ nptv6_create(const char *name, uint8_t set, int ac, char *av[])
ac--; av++; ac--; av++;
break; break;
case TOK_EXTPREFIX: case TOK_EXTPREFIX:
if (flags & NPTV6_HAS_EXTPREFIX)
errx(EX_USAGE,
"Only one ext_prefix or ext_if allowed");
NEED1("IPv6 prefix required"); NEED1("IPv6 prefix required");
nptv6_parse_prefix(*av, &cfg->external, &plen); nptv6_parse_prefix(*av, &cfg->external, &plen);
flags |= NPTV6_HAS_EXTPREFIX; flags |= NPTV6_HAS_EXTPREFIX;
@ -221,6 +225,18 @@ nptv6_create(const char *name, uint8_t set, int ac, char *av[])
goto check_prefix; goto check_prefix;
ac--; av++; ac--; av++;
break; break;
case TOK_EXTIF:
if (flags & NPTV6_HAS_EXTPREFIX)
errx(EX_USAGE,
"Only one ext_prefix or ext_if allowed");
NEED1("Interface name required");
if (strlen(*av) >= sizeof(cfg->if_name))
errx(EX_USAGE, "Invalid interface name");
flags |= NPTV6_HAS_EXTPREFIX;
cfg->flags |= NPTV6_DYNAMIC_PREFIX;
strncpy(cfg->if_name, *av, sizeof(cfg->if_name));
ac--; av++;
break;
case TOK_PREFIXLEN: case TOK_PREFIXLEN:
NEED1("IPv6 prefix length required"); NEED1("IPv6 prefix length required");
plen = strtol(*av, &p, 10); plen = strtol(*av, &p, 10);
@ -245,13 +261,14 @@ nptv6_create(const char *name, uint8_t set, int ac, char *av[])
if ((flags & NPTV6_HAS_INTPREFIX) != NPTV6_HAS_INTPREFIX) if ((flags & NPTV6_HAS_INTPREFIX) != NPTV6_HAS_INTPREFIX)
errx(EX_USAGE, "int_prefix required"); errx(EX_USAGE, "int_prefix required");
if ((flags & NPTV6_HAS_EXTPREFIX) != NPTV6_HAS_EXTPREFIX) if ((flags & NPTV6_HAS_EXTPREFIX) != NPTV6_HAS_EXTPREFIX)
errx(EX_USAGE, "ext_prefix required"); errx(EX_USAGE, "ext_prefix or ext_if required");
if ((flags & NPTV6_HAS_PREFIXLEN) != NPTV6_HAS_PREFIXLEN) if ((flags & NPTV6_HAS_PREFIXLEN) != NPTV6_HAS_PREFIXLEN)
errx(EX_USAGE, "prefixlen required"); errx(EX_USAGE, "prefixlen required");
n2mask(&mask, cfg->plen); n2mask(&mask, cfg->plen);
APPLY_MASK(&cfg->internal, &mask); APPLY_MASK(&cfg->internal, &mask);
APPLY_MASK(&cfg->external, &mask); if ((cfg->flags & NPTV6_DYNAMIC_PREFIX) == 0)
APPLY_MASK(&cfg->external, &mask);
olh->count = 1; olh->count = 1;
olh->objsize = sizeof(*cfg); olh->objsize = sizeof(*cfg);
@ -350,8 +367,13 @@ nptv6_show_cb(ipfw_nptv6_cfg *cfg, const char *name, uint8_t set)
printf("set %u ", cfg->set); printf("set %u ", cfg->set);
inet_ntop(AF_INET6, &cfg->internal, abuf, sizeof(abuf)); inet_ntop(AF_INET6, &cfg->internal, abuf, sizeof(abuf));
printf("nptv6 %s int_prefix %s ", cfg->name, abuf); printf("nptv6 %s int_prefix %s ", cfg->name, abuf);
inet_ntop(AF_INET6, &cfg->external, abuf, sizeof(abuf)); if (cfg->flags & NPTV6_DYNAMIC_PREFIX)
printf("ext_prefix %s prefixlen %u\n", abuf, cfg->plen); printf("ext_if %s ", cfg->if_name);
else {
inet_ntop(AF_INET6, &cfg->external, abuf, sizeof(abuf));
printf("ext_prefix %s ", abuf);
}
printf("prefixlen %u\n", cfg->plen);
return (0); return (0);
} }

View File

@ -1403,6 +1403,7 @@ ifa_lookup(const char *ifa_name, int flags)
set_ipmask(n, 128); set_ipmask(n, 128);
} }
n->ifindex = p->ifindex; n->ifindex = p->ifindex;
n->ifname = strdup(p->ifname);
n->next = NULL; n->next = NULL;
n->tail = n; n->tail = n;

View File

@ -242,7 +242,8 @@ main(int argc, char *const *argv)
#endif #endif
struct sockaddr_in *to; struct sockaddr_in *to;
double t; double t;
u_long alarmtimeout, ultmp; u_long alarmtimeout;
long ltmp;
int almost_done, ch, df, hold, i, icmp_len, mib[4], preload; int almost_done, ch, df, hold, i, icmp_len, mib[4], preload;
int ssend_errno, srecv_errno, tos, ttl; int ssend_errno, srecv_errno, tos, ttl;
char ctrl[CMSG_SPACE(sizeof(struct timeval))]; char ctrl[CMSG_SPACE(sizeof(struct timeval))];
@ -311,12 +312,12 @@ main(int argc, char *const *argv)
options |= F_AUDIBLE; options |= F_AUDIBLE;
break; break;
case 'c': case 'c':
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg || ultmp > LONG_MAX || !ultmp) if (*ep || ep == optarg || ltmp > LONG_MAX || ltmp <=0)
errx(EX_USAGE, errx(EX_USAGE,
"invalid count of packets to transmit: `%s'", "invalid count of packets to transmit: `%s'",
optarg); optarg);
npackets = ultmp; npackets = ltmp;
break; break;
case 'D': case 'D':
options |= F_HDRINCL; options |= F_HDRINCL;
@ -334,46 +335,46 @@ main(int argc, char *const *argv)
setbuf(stdout, (char *)NULL); setbuf(stdout, (char *)NULL);
break; break;
case 'G': /* Maximum packet size for ping sweep */ case 'G': /* Maximum packet size for ping sweep */
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg) if (*ep || ep == optarg || ltmp <= 0)
errx(EX_USAGE, "invalid packet size: `%s'", errx(EX_USAGE, "invalid packet size: `%s'",
optarg); optarg);
if (uid != 0 && ultmp > DEFDATALEN) { if (uid != 0 && ltmp > DEFDATALEN) {
errno = EPERM; errno = EPERM;
err(EX_NOPERM, err(EX_NOPERM,
"packet size too large: %lu > %u", "packet size too large: %ld > %u",
ultmp, DEFDATALEN); ltmp, DEFDATALEN);
} }
options |= F_SWEEP; options |= F_SWEEP;
sweepmax = ultmp; sweepmax = ltmp;
break; break;
case 'g': /* Minimum packet size for ping sweep */ case 'g': /* Minimum packet size for ping sweep */
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg) if (*ep || ep == optarg || ltmp <= 0)
errx(EX_USAGE, "invalid packet size: `%s'", errx(EX_USAGE, "invalid packet size: `%s'",
optarg); optarg);
if (uid != 0 && ultmp > DEFDATALEN) { if (uid != 0 && ltmp > DEFDATALEN) {
errno = EPERM; errno = EPERM;
err(EX_NOPERM, err(EX_NOPERM,
"packet size too large: %lu > %u", "packet size too large: %ld > %u",
ultmp, DEFDATALEN); ltmp, DEFDATALEN);
} }
options |= F_SWEEP; options |= F_SWEEP;
sweepmin = ultmp; sweepmin = ltmp;
break; break;
case 'h': /* Packet size increment for ping sweep */ case 'h': /* Packet size increment for ping sweep */
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg || ultmp < 1) if (*ep || ep == optarg || ltmp < 1)
errx(EX_USAGE, "invalid increment size: `%s'", errx(EX_USAGE, "invalid increment size: `%s'",
optarg); optarg);
if (uid != 0 && ultmp > DEFDATALEN) { if (uid != 0 && ltmp > DEFDATALEN) {
errno = EPERM; errno = EPERM;
err(EX_NOPERM, err(EX_NOPERM,
"packet size too large: %lu > %u", "packet size too large: %ld > %u",
ultmp, DEFDATALEN); ltmp, DEFDATALEN);
} }
options |= F_SWEEP; options |= F_SWEEP;
sweepincr = ultmp; sweepincr = ltmp;
break; break;
case 'I': /* multicast interface */ case 'I': /* multicast interface */
if (inet_aton(optarg, &ifaddr) == 0) if (inet_aton(optarg, &ifaddr) == 0)
@ -399,15 +400,15 @@ main(int argc, char *const *argv)
loop = 0; loop = 0;
break; break;
case 'l': case 'l':
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg || ultmp > INT_MAX) if (*ep || ep == optarg || ltmp > INT_MAX || ltmp < 0)
errx(EX_USAGE, errx(EX_USAGE,
"invalid preload value: `%s'", optarg); "invalid preload value: `%s'", optarg);
if (uid) { if (uid) {
errno = EPERM; errno = EPERM;
err(EX_NOPERM, "-l flag"); err(EX_NOPERM, "-l flag");
} }
preload = ultmp; preload = ltmp;
break; break;
case 'M': case 'M':
switch(optarg[0]) { switch(optarg[0]) {
@ -425,10 +426,10 @@ main(int argc, char *const *argv)
} }
break; break;
case 'm': /* TTL */ case 'm': /* TTL */
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg || ultmp > MAXTTL) if (*ep || ep == optarg || ltmp > MAXTTL || ltmp < 0)
errx(EX_USAGE, "invalid TTL: `%s'", optarg); errx(EX_USAGE, "invalid TTL: `%s'", optarg);
ttl = ultmp; ttl = ltmp;
options |= F_TTL; options |= F_TTL;
break; break;
case 'n': case 'n':
@ -470,24 +471,24 @@ main(int argc, char *const *argv)
source = optarg; source = optarg;
break; break;
case 's': /* size of packet to send */ case 's': /* size of packet to send */
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg) if (*ep || ep == optarg || ltmp < 0)
errx(EX_USAGE, "invalid packet size: `%s'", errx(EX_USAGE, "invalid packet size: `%s'",
optarg); optarg);
if (uid != 0 && ultmp > DEFDATALEN) { if (uid != 0 && ltmp > DEFDATALEN) {
errno = EPERM; errno = EPERM;
err(EX_NOPERM, err(EX_NOPERM,
"packet size too large: %lu > %u", "packet size too large: %ld > %u",
ultmp, DEFDATALEN); ltmp, DEFDATALEN);
} }
datalen = ultmp; datalen = ltmp;
break; break;
case 'T': /* multicast TTL */ case 'T': /* multicast TTL */
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg || ultmp > MAXTTL) if (*ep || ep == optarg || ltmp > MAXTTL || ltmp < 0)
errx(EX_USAGE, "invalid multicast TTL: `%s'", errx(EX_USAGE, "invalid multicast TTL: `%s'",
optarg); optarg);
mttl = ultmp; mttl = ltmp;
options |= F_MTTL; options |= F_MTTL;
break; break;
case 't': case 't':
@ -513,10 +514,10 @@ main(int argc, char *const *argv)
break; break;
case 'z': case 'z':
options |= F_HDRINCL; options |= F_HDRINCL;
ultmp = strtoul(optarg, &ep, 0); ltmp = strtol(optarg, &ep, 0);
if (*ep || ep == optarg || ultmp > MAXTOS) if (*ep || ep == optarg || ltmp > MAXTOS || ltmp < 0)
errx(EX_USAGE, "invalid TOS: `%s'", optarg); errx(EX_USAGE, "invalid TOS: `%s'", optarg);
tos = ultmp; tos = ltmp;
break; break;
default: default:
usage(); usage();
@ -611,7 +612,7 @@ main(int argc, char *const *argv)
if (capdns != NULL) { if (capdns != NULL) {
const char *types[1]; const char *types[1];
types[0] = "ADDR"; types[0] = "ADDR2NAME";
if (cap_dns_type_limit(capdns, types, 1) < 0) if (cap_dns_type_limit(capdns, types, 1) < 0)
err(1, "unable to limit access to system.dns service"); err(1, "unable to limit access to system.dns service");
} }
@ -1780,8 +1781,8 @@ capdns_setup(void)
cap_close(capcas); cap_close(capcas);
if (capdnsloc == NULL) if (capdnsloc == NULL)
err(1, "unable to open system.dns service"); err(1, "unable to open system.dns service");
types[0] = "NAME"; types[0] = "NAME2ADDR";
types[1] = "ADDR"; types[1] = "ADDR2NAME";
if (cap_dns_type_limit(capdnsloc, types, 2) < 0) if (cap_dns_type_limit(capdnsloc, types, 2) < 0)
err(1, "unable to limit access to system.dns service"); err(1, "unable to limit access to system.dns service");
families[0] = AF_INET; families[0] = AF_INET;

View File

@ -60,7 +60,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd September 21, 2018 .Dd November 10, 2018
.Dt DDB 4 .Dt DDB 4
.Os .Os
.Sh NAME .Sh NAME
@ -108,7 +108,9 @@ If linked into the running kernel,
it can be invoked locally with the it can be invoked locally with the
.Ql debug .Ql debug
.Xr keymap 5 .Xr keymap 5
action. action, or by setting setting the
.Dv debug.kdb.enter
sysctl to 1.
The debugger is also invoked on kernel The debugger is also invoked on kernel
.Xr panic 9 .Xr panic 9
if the if the
@ -261,9 +263,9 @@ Non-printing characters are displayed as octal escapes.
display in unsigned hex with character dump at the end of each line. display in unsigned hex with character dump at the end of each line.
The location is also displayed in hex at the beginning of each line. The location is also displayed in hex at the beginning of each line.
.It Cm i .It Cm i
display as an instruction display as a disassembled instruction
.It Cm I .It Cm I
display as an instruction with possible alternate formats depending on the display as an disassembled instruction with possible alternate formats depending on the
machine. machine.
On i386, this selects the alternate format for the instruction decoding On i386, this selects the alternate format for the instruction decoding
(16 bits in a 32-bit code segment and vice versa). (16 bits in a 32-bit code segment and vice versa).

View File

@ -27,7 +27,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 23, 2018 .Dd October 28, 2018
.Dt NETMAP 4 .Dt NETMAP 4
.Os .Os
.Sh NAME .Sh NAME
@ -1073,8 +1073,11 @@ Other
clients attached to the same switch can now communicate clients attached to the same switch can now communicate
with the network card or the host. with the network card or the host.
.Sh SEE ALSO .Sh SEE ALSO
.Xr pkt-gen 8 , .Xr vale 4 ,
.Xr bridge 8 .Xr vale-ctl 4 ,
.Xr bridge 8 ,
.Xr lb 8 ,
.Xr pkt-gen 8
.Pp .Pp
.Pa http://info.iet.unipi.it/~luigi/netmap/ .Pa http://info.iet.unipi.it/~luigi/netmap/
.Pp .Pp

View File

@ -16,7 +16,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 9, 2016 .Dd November 8, 2018
.Dt RUM 4 .Dt RUM 4
.Os .Os
.Sh NAME .Sh NAME
@ -123,7 +123,7 @@ including:
.It "Sitecom WL-113 ver 2" Ta USB .It "Sitecom WL-113 ver 2" Ta USB
.It "Sitecom WL-172" Ta USB .It "Sitecom WL-172" Ta USB
.It "Sweex LW053" Ta USB .It "Sweex LW053" Ta USB
.It "TP-LINK TL-WN321G" Ta USB .It "TP-LINK TL-WN321G v1/v2/v3" Ta USB
.El .El
.Sh EXAMPLES .Sh EXAMPLES
Join an existing BSS network (i.e., connect to an access point): Join an existing BSS network (i.e., connect to an access point):

View File

@ -16,7 +16,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd July 10, 2018 .Dd November 8, 2018
.Dt RUN 4 .Dt RUN 4
.Os .Os
.Sh NAME .Sh NAME
@ -176,6 +176,7 @@ driver supports the following wireless adapters:
.It Sweex LW303 .It Sweex LW303
.It Sweex LW313 .It Sweex LW313
.It TP-LINK TL-WDN3200 .It TP-LINK TL-WDN3200
.It TP-LINK TL-WN321G v4
.It TP-LINK TL-WN727N v3 .It TP-LINK TL-WN727N v3
.It Unex DNUR-81 .It Unex DNUR-81
.It Unex DNUR-82 .It Unex DNUR-82

View File

@ -33,7 +33,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 6, 2016 .Dd November 10, 2018
.Dt NSSWITCH.CONF 5 .Dt NSSWITCH.CONF 5
.Os .Os
.Sh NAME .Sh NAME
@ -62,7 +62,7 @@ the current source.
Each criterion consists of one or more status codes, and actions to Each criterion consists of one or more status codes, and actions to
take if that status code occurs. take if that status code occurs.
.Ss Sources .Ss Sources
The following sources are implemented: The following sources are implemented as part of the base system:
.Pp .Pp
.Bl -tag -width Source -compact .Bl -tag -width Source -compact
.It Sy Source .It Sy Source
@ -100,6 +100,8 @@ makes use of the
.Xr nscd 8 .Xr nscd 8
daemon. daemon.
.El .El
.Pp
Additional sources might be provided by third party software.
.Ss Databases .Ss Databases
The following databases are used by the following C library functions: The following databases are used by the following C library functions:
.Pp .Pp
@ -340,6 +342,12 @@ sets a policy of "if the user is notfound in nis, do not try files."
This treats nis as the authoritative source of information, except This treats nis as the authoritative source of information, except
when the server is down. when the server is down.
.Sh NOTES .Sh NOTES
The
.Nm
file is parsed by each program only once.
Subsequent changes will not be applied until the program
is restarted.
.Pp
If system got compiled with If system got compiled with
.Va WITHOUT_NIS .Va WITHOUT_NIS
you have to remove you have to remove

View File

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd August 16, 2018 .Dd November 10, 2018
.Dt BUILD 7 .Dt BUILD 7
.Os .Os
.Sh NAME .Sh NAME
@ -168,16 +168,16 @@ are:
.Bl -tag -width ".Cm distributeworld" .Bl -tag -width ".Cm distributeworld"
.It Cm buildenv .It Cm buildenv
Spawn an interactive shell with environment variables set up for Spawn an interactive shell with environment variables set up for
cross-building the system. building the system or individual components.
The target architecture needs to be specified with For cross-building the target architecture needs to be specified with
.Xr make 1 .Xr make 1
variables variables
.Va TARGET_ARCH .Va TARGET_ARCH
and and
.Va TARGET . .Va TARGET .
.Pp .Pp
This target is only useful after a complete cross-toolchain including This target is only useful after a complete toolchain (including
the compiler, linker, assembler, headers and libraries has been the compiler, linker, assembler, headers and libraries) has been
built; see the built; see the
.Cm toolchain .Cm toolchain
target below. target below.

View File

@ -1,7 +1,3 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
# #
# Short month names # Short month names
Jän. Jän.
@ -59,8 +55,8 @@ Samstag
%a %e %b %X %Y %a %e %b %X %Y
# #
# AM/PM # AM/PM
vorm.
nachm.
# #
# date_fmt # date_fmt
%a %e %b %Y %X %Z %a %e %b %Y %X %Z
@ -83,5 +79,5 @@ Dezember
dm dm
# #
# ampm_fmt # ampm_fmt
%I:%M:%S %p
# EOF # EOF

View File

@ -1,7 +1,3 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
# #
# Short month names # Short month names
Jän. Jän.
@ -59,8 +55,8 @@ Samstag
%a %e %b %X %Y %a %e %b %X %Y
# #
# AM/PM # AM/PM
vorm.
nachm.
# #
# date_fmt # date_fmt
%a %e %b %Y %X %Z %a %e %b %Y %X %Z
@ -83,5 +79,5 @@ Dezember
dm dm
# #
# ampm_fmt # ampm_fmt
%I:%M:%S %p
# EOF # EOF

View File

@ -1,7 +1,3 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
# #
# Short month names # Short month names
Jan. Jan.
@ -59,8 +55,8 @@ Samstag
%a %e %b %X %Y %a %e %b %X %Y
# #
# AM/PM # AM/PM
vorm.
nachm.
# #
# date_fmt # date_fmt
%a %e %b %Y %X %Z %a %e %b %Y %X %Z
@ -83,5 +79,5 @@ Dezember
dm dm
# #
# ampm_fmt # ampm_fmt
%I:%M:%S %p
# EOF # EOF

View File

@ -1,7 +1,3 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
# #
# Short month names # Short month names
Jan. Jan.
@ -59,8 +55,8 @@ Samstag
%a %e %b %X %Y %a %e %b %X %Y
# #
# AM/PM # AM/PM
vorm.
nachm.
# #
# date_fmt # date_fmt
%a %e %b %Y %X %Z %a %e %b %Y %X %Z
@ -83,5 +79,5 @@ Dezember
dm dm
# #
# ampm_fmt # ampm_fmt
%I:%M:%S %p
# EOF # EOF

View File

@ -675,10 +675,12 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize,
table->type = PTABLE_NONE; table->type = PTABLE_NONE;
STAILQ_INIT(&table->entries); STAILQ_INIT(&table->entries);
if (ptable_iso9660read(table, dev, dread) != NULL) { if (ptable_iso9660read(table, dev, dread) == NULL) {
if (table->type == PTABLE_ISO9660) /* Read error. */
goto out; table = NULL;
} goto out;
} else if (table->type == PTABLE_ISO9660)
goto out;
#ifdef LOADER_VTOC8_SUPPORT #ifdef LOADER_VTOC8_SUPPORT
if (be16dec(buf + offsetof(struct vtoc8, magic)) == VTOC_MAGIC) { if (be16dec(buf + offsetof(struct vtoc8, magic)) == VTOC_MAGIC) {

View File

@ -515,24 +515,38 @@ END(memcpy_erms)
1256: 1256:
movq %rdi,%r9 movq %rdi,%r9
movq %r10,%rax movq %r10,%rax
testl $15,%edi
jnz 3f
1:
.if \erms == 1 .if \erms == 1
rep rep
stosb stosb
movq %r9,%rax movq %r9,%rax
.else .else
movq %rcx,%rdx
shrq $3,%rcx shrq $3,%rcx
rep rep
stosq stosq
movq %r9,%rax movq %r9,%rax
andl $7,%edx andl $7,%edx
jnz 1f jnz 2f
POP_FRAME_POINTER POP_FRAME_POINTER
ret ret
1: 2:
movq %r10,-8(%rdi,%rdx) movq %r10,-8(%rdi,%rdx)
.endif .endif
POP_FRAME_POINTER POP_FRAME_POINTER
ret ret
ALIGN_TEXT
3:
movq %r10,(%rdi)
movq %r10,8(%rdi)
movq %rdi,%r8
andq $15,%r8
leaq -16(%rcx,%r8),%rcx
neg %r8
leaq 16(%rdi,%r8),%rdi
jmp 1b
.endm .endm
ENTRY(memset_std) ENTRY(memset_std)

View File

@ -64,7 +64,7 @@ sdma_fw.c optional sdma_fw \
clean "sdma_fw.c" clean "sdma_fw.c"
sdma-imx6q-to1.fwo optional sdma_fw \ sdma-imx6q-to1.fwo optional sdma_fw \
dependency "sdma-imx6q-to1.bin" \ dependency "sdma-imx6q-to1.bin" \
compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} sdma-imx6q-to1.bin" \ compile-with "${LD} -m ${LD_EMULATION} -b binary -d -warn-common -r -d -o ${.TARGET} sdma-imx6q-to1.bin" \
no-implicit-rule \ no-implicit-rule \
clean "sdma-imx6q-to1.fwo" clean "sdma-imx6q-to1.fwo"
sdma-imx6q-to1.bin optional sdma_fw \ sdma-imx6q-to1.bin optional sdma_fw \

View File

@ -4565,7 +4565,7 @@ arc_flush(spa_t *spa, boolean_t retry)
(void) arc_flush_state(arc_mfu_ghost, guid, ARC_BUFC_METADATA, retry); (void) arc_flush_state(arc_mfu_ghost, guid, ARC_BUFC_METADATA, retry);
} }
void uint64_t
arc_shrink(int64_t to_free) arc_shrink(int64_t to_free)
{ {
uint64_t asize = aggsum_value(&arc_size); uint64_t asize = aggsum_value(&arc_size);
@ -4593,8 +4593,9 @@ arc_shrink(int64_t to_free)
if (asize > arc_c) { if (asize > arc_c) {
DTRACE_PROBE2(arc__shrink_adjust, uint64_t, asize, DTRACE_PROBE2(arc__shrink_adjust, uint64_t, asize,
uint64_t, arc_c); uint64_t, arc_c);
(void) arc_adjust(); return (arc_adjust());
} }
return (0);
} }
typedef enum free_memory_reason_t { typedef enum free_memory_reason_t {
@ -4917,7 +4918,7 @@ arc_reclaim_thread(void *unused __unused)
to_free = MAX(to_free, ptob(needfree)); to_free = MAX(to_free, ptob(needfree));
#endif #endif
#endif #endif
arc_shrink(to_free); evicted += arc_shrink(to_free);
} }
} else if (free_memory < arc_c >> arc_no_grow_shift) { } else if (free_memory < arc_c >> arc_no_grow_shift) {
arc_no_grow = B_TRUE; arc_no_grow = B_TRUE;

View File

@ -47,14 +47,14 @@ __mac_get_fd
__mac_get_proc __mac_get_proc
__mac_set_fd __mac_set_fd
__mac_set_proc __mac_set_proc
freebsd32_sysctl freebsd32___sysctl
freebsd32_umtx_op freebsd32__umtx_op
abort2 abort2
accept accept
accept4 accept4
aio_cancel aio_cancel
freebsd32_aio_error freebsd32_aio_error
aio_fsync freebsd32_aio_fsync
freebsd32_aio_read freebsd32_aio_read
freebsd32_aio_return freebsd32_aio_return
freebsd32_aio_suspend freebsd32_aio_suspend
@ -94,16 +94,17 @@ freebsd32_fexecve
flock flock
fork fork
fpathconf fpathconf
freebsd11_freebsd32_fstat freebsd32_fstat
freebsd11_freebsd32_fstatat freebsd32_fstatat
freebsd11_freebsd32_getdirentries freebsd32_getdirentries
freebsd11_freebsd32_fstatfs freebsd32_fstatfs
freebsd11_freebsd32_mknodat freebsd32_mknodat
freebsd6_freebsd32_ftruncate freebsd32_ftruncate
freebsd6_freebsd32_lseek freebsd32_lseek
freebsd6_freebsd32_mmap freebsd32_mmap
freebsd6_freebsd32_pread mmap
freebsd6_freebsd32_pwrite freebsd32_pread
freebsd32_pwrite
freebsd32_fstat freebsd32_fstat
fstatfs fstatfs
fsync fsync
@ -115,7 +116,7 @@ getaudit
getaudit_addr getaudit_addr
getauid getauid
freebsd32_getcontext freebsd32_getcontext
getdents freebsd32_getdents
freebsd32_getdirentries freebsd32_getdirentries
getdirentries getdirentries
getdomainname getdomainname
@ -178,7 +179,7 @@ freebsd32_nanosleep
ntp_gettime ntp_gettime
freebsd6_freebsd32_aio_read freebsd6_freebsd32_aio_read
freebsd6_freebsd32_aio_write freebsd6_freebsd32_aio_write
obreak break
freebsd6_freebsd32_lio_listio freebsd6_freebsd32_lio_listio
chflagsat chflagsat
faccessat faccessat
@ -223,7 +224,7 @@ sched_get_priority_max
sched_get_priority_min sched_get_priority_min
sched_getparam sched_getparam
sched_getscheduler sched_getscheduler
sched_rr_get_interval freebsd32_sched_rr_get_interval
sched_setparam sched_setparam
sched_setscheduler sched_setscheduler
sched_yield sched_yield
@ -260,11 +261,15 @@ freebsd32_sigaction
freebsd32_sigaltstack freebsd32_sigaltstack
freebsd32_sigblock freebsd32_sigblock
freebsd32_sigpending freebsd32_sigpending
sigpending
freebsd32_sigprocmask
sigprocmask sigprocmask
freebsd32_sigqueue
sigqueue sigqueue
freebsd32_sigreturn freebsd32_sigreturn
freebsd32_sigsetmask freebsd32_sigsetmask
ofreebsd32_sigstack freebsd32_sigstack
freebsd32_sigsuspend
sigsuspend sigsuspend
freebsd32_sigtimedwait freebsd32_sigtimedwait
freebsd32_sigvec freebsd32_sigvec

View File

@ -463,25 +463,14 @@ freebsd32_fexecve(struct thread *td, struct freebsd32_fexecve_args *uap)
return (error); return (error);
} }
#if defined(COMPAT_FREEBSD11)
int
freebsd11_freebsd32_mknod(struct thread *td,
struct freebsd11_freebsd32_mknod_args *uap)
{
return (kern_mknodat(td, AT_FDCWD, uap->path, UIO_USERSPACE, uap->mode,
uap->dev));
}
int int
freebsd11_freebsd32_mknodat(struct thread *td, freebsd32_mknodat(struct thread *td, struct freebsd32_mknodat_args *uap)
struct freebsd11_freebsd32_mknodat_args *uap)
{ {
return (kern_mknodat(td, uap->fd, uap->path, UIO_USERSPACE, uap->mode, return (kern_mknodat(td, uap->fd, uap->path, UIO_USERSPACE,
uap->dev)); uap->mode, PAIR32TO64(dev_t, uap->dev)));
} }
#endif /* COMPAT_FREEBSD11 */
int int
freebsd32_mprotect(struct thread *td, struct freebsd32_mprotect_args *uap) freebsd32_mprotect(struct thread *td, struct freebsd32_mprotect_args *uap)
@ -2260,7 +2249,7 @@ freebsd11_freebsd32_fhstat(struct thread *td,
#endif #endif
int int
freebsd32_sysctl(struct thread *td, struct freebsd32_sysctl_args *uap) freebsd32___sysctl(struct thread *td, struct freebsd32___sysctl_args *uap)
{ {
int error, name[CTL_MAXNAME]; int error, name[CTL_MAXNAME];
size_t j, oldlen; size_t j, oldlen;

View File

@ -162,7 +162,7 @@ struct freebsd32_shmsys_args {
char a3_l_[PADL_(uint32_t)]; uint32_t a3; char a3_r_[PADR_(uint32_t)]; char a3_l_[PADL_(uint32_t)]; uint32_t a3; char a3_r_[PADR_(uint32_t)];
char a4_l_[PADL_(uint32_t)]; uint32_t a4; char a4_r_[PADR_(uint32_t)]; char a4_l_[PADL_(uint32_t)]; uint32_t a4; char a4_r_[PADR_(uint32_t)];
}; };
struct freebsd32_sysctl_args { struct freebsd32___sysctl_args {
char name_l_[PADL_(int *)]; int * name; char name_r_[PADR_(int *)]; char name_l_[PADL_(int *)]; int * name; char name_r_[PADR_(int *)];
char namelen_l_[PADL_(u_int)]; u_int namelen; char namelen_r_[PADR_(u_int)]; char namelen_l_[PADL_(u_int)]; u_int namelen; char namelen_r_[PADR_(u_int)];
char old_l_[PADL_(void *)]; void * old; char old_r_[PADR_(void *)]; char old_l_[PADL_(void *)]; void * old; char old_r_[PADR_(void *)];
@ -350,7 +350,7 @@ struct freebsd32_ksem_timedwait_args {
struct freebsd32_thr_suspend_args { struct freebsd32_thr_suspend_args {
char timeout_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * timeout; char timeout_r_[PADR_(const struct timespec32 *)]; char timeout_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * timeout; char timeout_r_[PADR_(const struct timespec32 *)];
}; };
struct freebsd32_umtx_op_args { struct freebsd32__umtx_op_args {
char obj_l_[PADL_(void *)]; void * obj; char obj_r_[PADR_(void *)]; char obj_l_[PADL_(void *)]; void * obj; char obj_r_[PADR_(void *)];
char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)]; char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
char val_l_[PADL_(u_long)]; u_long val; char val_r_[PADR_(u_long)]; char val_l_[PADL_(u_long)]; u_long val; char val_r_[PADR_(u_long)];
@ -684,6 +684,24 @@ struct freebsd32_fhstat_args {
char u_fhp_l_[PADL_(const struct fhandle *)]; const struct fhandle * u_fhp; char u_fhp_r_[PADR_(const struct fhandle *)]; char u_fhp_l_[PADL_(const struct fhandle *)]; const struct fhandle * u_fhp; char u_fhp_r_[PADR_(const struct fhandle *)];
char sb_l_[PADL_(struct stat32 *)]; struct stat32 * sb; char sb_r_[PADR_(struct stat32 *)]; char sb_l_[PADL_(struct stat32 *)]; struct stat32 * sb; char sb_r_[PADR_(struct stat32 *)];
}; };
#ifdef PAD64_REQUIRED
struct freebsd32_mknodat_args {
char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
char mode_l_[PADL_(mode_t)]; mode_t mode; char mode_r_[PADR_(mode_t)];
char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
char dev1_l_[PADL_(uint32_t)]; uint32_t dev1; char dev1_r_[PADR_(uint32_t)];
char dev2_l_[PADL_(uint32_t)]; uint32_t dev2; char dev2_r_[PADR_(uint32_t)];
};
#else
struct freebsd32_mknodat_args {
char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
char mode_l_[PADL_(mode_t)]; mode_t mode; char mode_r_[PADR_(mode_t)];
char dev1_l_[PADL_(uint32_t)]; uint32_t dev1; char dev1_r_[PADR_(uint32_t)];
char dev2_l_[PADL_(uint32_t)]; uint32_t dev2; char dev2_r_[PADR_(uint32_t)];
};
#endif
struct freebsd32_kevent_args { struct freebsd32_kevent_args {
char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
char changelist_l_[PADL_(const struct kevent32 *)]; const struct kevent32 * changelist; char changelist_r_[PADR_(const struct kevent32 *)]; char changelist_l_[PADL_(const struct kevent32 *)]; const struct kevent32 * changelist; char changelist_r_[PADR_(const struct kevent32 *)];
@ -736,7 +754,7 @@ int freebsd32_sysarch(struct thread *, struct freebsd32_sysarch_args *);
int freebsd32_semsys(struct thread *, struct freebsd32_semsys_args *); int freebsd32_semsys(struct thread *, struct freebsd32_semsys_args *);
int freebsd32_msgsys(struct thread *, struct freebsd32_msgsys_args *); int freebsd32_msgsys(struct thread *, struct freebsd32_msgsys_args *);
int freebsd32_shmsys(struct thread *, struct freebsd32_shmsys_args *); int freebsd32_shmsys(struct thread *, struct freebsd32_shmsys_args *);
int freebsd32_sysctl(struct thread *, struct freebsd32_sysctl_args *); int freebsd32___sysctl(struct thread *, struct freebsd32___sysctl_args *);
int freebsd32_futimes(struct thread *, struct freebsd32_futimes_args *); int freebsd32_futimes(struct thread *, struct freebsd32_futimes_args *);
int freebsd32_msgsnd(struct thread *, struct freebsd32_msgsnd_args *); int freebsd32_msgsnd(struct thread *, struct freebsd32_msgsnd_args *);
int freebsd32_msgrcv(struct thread *, struct freebsd32_msgrcv_args *); int freebsd32_msgrcv(struct thread *, struct freebsd32_msgrcv_args *);
@ -776,7 +794,7 @@ int freebsd32_setcontext(struct thread *, struct freebsd32_setcontext_args *);
int freebsd32_swapcontext(struct thread *, struct freebsd32_swapcontext_args *); int freebsd32_swapcontext(struct thread *, struct freebsd32_swapcontext_args *);
int freebsd32_ksem_timedwait(struct thread *, struct freebsd32_ksem_timedwait_args *); int freebsd32_ksem_timedwait(struct thread *, struct freebsd32_ksem_timedwait_args *);
int freebsd32_thr_suspend(struct thread *, struct freebsd32_thr_suspend_args *); int freebsd32_thr_suspend(struct thread *, struct freebsd32_thr_suspend_args *);
int freebsd32_umtx_op(struct thread *, struct freebsd32_umtx_op_args *); int freebsd32__umtx_op(struct thread *, struct freebsd32__umtx_op_args *);
int freebsd32_thr_new(struct thread *, struct freebsd32_thr_new_args *); int freebsd32_thr_new(struct thread *, struct freebsd32_thr_new_args *);
int freebsd32_sigqueue(struct thread *, struct freebsd32_sigqueue_args *); int freebsd32_sigqueue(struct thread *, struct freebsd32_sigqueue_args *);
int freebsd32_kmq_open(struct thread *, struct freebsd32_kmq_open_args *); int freebsd32_kmq_open(struct thread *, struct freebsd32_kmq_open_args *);
@ -839,6 +857,11 @@ int freebsd32_utimensat(struct thread *, struct freebsd32_utimensat_args *);
int freebsd32_fstat(struct thread *, struct freebsd32_fstat_args *); int freebsd32_fstat(struct thread *, struct freebsd32_fstat_args *);
int freebsd32_fstatat(struct thread *, struct freebsd32_fstatat_args *); int freebsd32_fstatat(struct thread *, struct freebsd32_fstatat_args *);
int freebsd32_fhstat(struct thread *, struct freebsd32_fhstat_args *); int freebsd32_fhstat(struct thread *, struct freebsd32_fhstat_args *);
#ifdef PAD64_REQUIRED
int freebsd32_mknodat(struct thread *, struct freebsd32_mknodat_args *);
#else
int freebsd32_mknodat(struct thread *, struct freebsd32_mknodat_args *);
#endif
int freebsd32_kevent(struct thread *, struct freebsd32_kevent_args *); int freebsd32_kevent(struct thread *, struct freebsd32_kevent_args *);
int freebsd32_cpuset_getdomain(struct thread *, struct freebsd32_cpuset_getdomain_args *); int freebsd32_cpuset_getdomain(struct thread *, struct freebsd32_cpuset_getdomain_args *);
int freebsd32_cpuset_setdomain(struct thread *, struct freebsd32_cpuset_setdomain_args *); int freebsd32_cpuset_setdomain(struct thread *, struct freebsd32_cpuset_setdomain_args *);
@ -916,6 +939,9 @@ struct ofreebsd32_getdirentries_args {
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
#ifdef PAD64_REQUIRED
#else
#endif
int ofreebsd32_lseek(struct thread *, struct ofreebsd32_lseek_args *); int ofreebsd32_lseek(struct thread *, struct ofreebsd32_lseek_args *);
int ofreebsd32_stat(struct thread *, struct ofreebsd32_stat_args *); int ofreebsd32_stat(struct thread *, struct ofreebsd32_stat_args *);
int ofreebsd32_lstat(struct thread *, struct ofreebsd32_lstat_args *); int ofreebsd32_lstat(struct thread *, struct ofreebsd32_lstat_args *);
@ -987,6 +1013,9 @@ struct freebsd4_freebsd32_sigreturn_args {
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
#ifdef PAD64_REQUIRED
#else
#endif
int freebsd4_freebsd32_getfsstat(struct thread *, struct freebsd4_freebsd32_getfsstat_args *); int freebsd4_freebsd32_getfsstat(struct thread *, struct freebsd4_freebsd32_getfsstat_args *);
int freebsd4_freebsd32_statfs(struct thread *, struct freebsd4_freebsd32_statfs_args *); int freebsd4_freebsd32_statfs(struct thread *, struct freebsd4_freebsd32_statfs_args *);
int freebsd4_freebsd32_fstatfs(struct thread *, struct freebsd4_freebsd32_fstatfs_args *); int freebsd4_freebsd32_fstatfs(struct thread *, struct freebsd4_freebsd32_fstatfs_args *);
@ -1072,6 +1101,9 @@ struct freebsd6_freebsd32_lio_listio_args {
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
#ifdef PAD64_REQUIRED
#else
#endif
int freebsd6_freebsd32_pread(struct thread *, struct freebsd6_freebsd32_pread_args *); int freebsd6_freebsd32_pread(struct thread *, struct freebsd6_freebsd32_pread_args *);
int freebsd6_freebsd32_pwrite(struct thread *, struct freebsd6_freebsd32_pwrite_args *); int freebsd6_freebsd32_pwrite(struct thread *, struct freebsd6_freebsd32_pwrite_args *);
int freebsd6_freebsd32_mmap(struct thread *, struct freebsd6_freebsd32_mmap_args *); int freebsd6_freebsd32_mmap(struct thread *, struct freebsd6_freebsd32_mmap_args *);
@ -1118,6 +1150,9 @@ struct freebsd7_freebsd32_shmctl_args {
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
#ifdef PAD64_REQUIRED
#else
#endif
int freebsd7_freebsd32_semctl(struct thread *, struct freebsd7_freebsd32_semctl_args *); int freebsd7_freebsd32_semctl(struct thread *, struct freebsd7_freebsd32_semctl_args *);
int freebsd7_freebsd32_msgctl(struct thread *, struct freebsd7_freebsd32_msgctl_args *); int freebsd7_freebsd32_msgctl(struct thread *, struct freebsd7_freebsd32_msgctl_args *);
int freebsd7_freebsd32_shmctl(struct thread *, struct freebsd7_freebsd32_shmctl_args *); int freebsd7_freebsd32_shmctl(struct thread *, struct freebsd7_freebsd32_shmctl_args *);
@ -1142,6 +1177,9 @@ int freebsd7_freebsd32_shmctl(struct thread *, struct freebsd7_freebsd32_shmctl_
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
#ifdef PAD64_REQUIRED
#else
#endif
int freebsd10_freebsd32_pipe(struct thread *, struct freebsd10_freebsd32_pipe_args *); int freebsd10_freebsd32_pipe(struct thread *, struct freebsd10_freebsd32_pipe_args *);
#endif /* COMPAT_FREEBSD10 */ #endif /* COMPAT_FREEBSD10 */
@ -1152,11 +1190,6 @@ int freebsd10_freebsd32_pipe(struct thread *, struct freebsd10_freebsd32_pipe_ar
#if !defined(PAD64_REQUIRED) && (defined(__powerpc__) || defined(__mips__)) #if !defined(PAD64_REQUIRED) && (defined(__powerpc__) || defined(__mips__))
#define PAD64_REQUIRED #define PAD64_REQUIRED
#endif #endif
struct freebsd11_freebsd32_mknod_args {
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
char dev_l_[PADL_(int)]; int dev; char dev_r_[PADR_(int)];
};
struct freebsd11_freebsd32_stat_args { struct freebsd11_freebsd32_stat_args {
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)]; char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
char ub_l_[PADL_(struct freebsd11_stat32 *)]; struct freebsd11_stat32 * ub; char ub_r_[PADR_(struct freebsd11_stat32 *)]; char ub_l_[PADL_(struct freebsd11_stat32 *)]; struct freebsd11_stat32 * ub; char ub_r_[PADR_(struct freebsd11_stat32 *)];
@ -1204,19 +1237,15 @@ struct freebsd11_freebsd32_fstatat_args {
char buf_l_[PADL_(struct freebsd11_stat32 *)]; struct freebsd11_stat32 * buf; char buf_r_[PADR_(struct freebsd11_stat32 *)]; char buf_l_[PADL_(struct freebsd11_stat32 *)]; struct freebsd11_stat32 * buf; char buf_r_[PADR_(struct freebsd11_stat32 *)];
char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)]; char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)];
}; };
struct freebsd11_freebsd32_mknodat_args {
char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
char mode_l_[PADL_(mode_t)]; mode_t mode; char mode_r_[PADR_(mode_t)];
char dev_l_[PADL_(uint32_t)]; uint32_t dev; char dev_r_[PADR_(uint32_t)];
};
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
#ifdef PAD64_REQUIRED #ifdef PAD64_REQUIRED
#else #else
#endif #endif
int freebsd11_freebsd32_mknod(struct thread *, struct freebsd11_freebsd32_mknod_args *); #ifdef PAD64_REQUIRED
#else
#endif
int freebsd11_freebsd32_stat(struct thread *, struct freebsd11_freebsd32_stat_args *); int freebsd11_freebsd32_stat(struct thread *, struct freebsd11_freebsd32_stat_args *);
int freebsd11_freebsd32_fstat(struct thread *, struct freebsd11_freebsd32_fstat_args *); int freebsd11_freebsd32_fstat(struct thread *, struct freebsd11_freebsd32_fstat_args *);
int freebsd11_freebsd32_lstat(struct thread *, struct freebsd11_freebsd32_lstat_args *); int freebsd11_freebsd32_lstat(struct thread *, struct freebsd11_freebsd32_lstat_args *);
@ -1225,12 +1254,10 @@ int freebsd11_freebsd32_getdents(struct thread *, struct freebsd11_freebsd32_get
int freebsd11_freebsd32_fhstat(struct thread *, struct freebsd11_freebsd32_fhstat_args *); int freebsd11_freebsd32_fhstat(struct thread *, struct freebsd11_freebsd32_fhstat_args *);
int freebsd11_freebsd32_kevent(struct thread *, struct freebsd11_freebsd32_kevent_args *); int freebsd11_freebsd32_kevent(struct thread *, struct freebsd11_freebsd32_kevent_args *);
int freebsd11_freebsd32_fstatat(struct thread *, struct freebsd11_freebsd32_fstatat_args *); int freebsd11_freebsd32_fstatat(struct thread *, struct freebsd11_freebsd32_fstatat_args *);
int freebsd11_freebsd32_mknodat(struct thread *, struct freebsd11_freebsd32_mknodat_args *);
#endif /* COMPAT_FREEBSD11 */ #endif /* COMPAT_FREEBSD11 */
#define FREEBSD32_SYS_AUE_freebsd32_wait4 AUE_WAIT4 #define FREEBSD32_SYS_AUE_freebsd32_wait4 AUE_WAIT4
#define FREEBSD32_SYS_AUE_freebsd11_freebsd32_mknod AUE_MKNOD
#define FREEBSD32_SYS_AUE_freebsd4_freebsd32_getfsstat AUE_GETFSSTAT #define FREEBSD32_SYS_AUE_freebsd4_freebsd32_getfsstat AUE_GETFSSTAT
#define FREEBSD32_SYS_AUE_ofreebsd32_lseek AUE_LSEEK #define FREEBSD32_SYS_AUE_ofreebsd32_lseek AUE_LSEEK
#define FREEBSD32_SYS_AUE_freebsd32_recvmsg AUE_RECVMSG #define FREEBSD32_SYS_AUE_freebsd32_recvmsg AUE_RECVMSG
@ -1282,7 +1309,7 @@ int freebsd11_freebsd32_mknodat(struct thread *, struct freebsd11_freebsd32_mkno
#define FREEBSD32_SYS_AUE_freebsd6_freebsd32_lseek AUE_LSEEK #define FREEBSD32_SYS_AUE_freebsd6_freebsd32_lseek AUE_LSEEK
#define FREEBSD32_SYS_AUE_freebsd6_freebsd32_truncate AUE_TRUNCATE #define FREEBSD32_SYS_AUE_freebsd6_freebsd32_truncate AUE_TRUNCATE
#define FREEBSD32_SYS_AUE_freebsd6_freebsd32_ftruncate AUE_FTRUNCATE #define FREEBSD32_SYS_AUE_freebsd6_freebsd32_ftruncate AUE_FTRUNCATE
#define FREEBSD32_SYS_AUE_freebsd32_sysctl AUE_SYSCTL #define FREEBSD32_SYS_AUE_freebsd32___sysctl AUE_SYSCTL
#define FREEBSD32_SYS_AUE_freebsd32_futimes AUE_FUTIMES #define FREEBSD32_SYS_AUE_freebsd32_futimes AUE_FUTIMES
#define FREEBSD32_SYS_AUE_freebsd7_freebsd32_semctl AUE_SEMCTL #define FREEBSD32_SYS_AUE_freebsd7_freebsd32_semctl AUE_SEMCTL
#define FREEBSD32_SYS_AUE_freebsd7_freebsd32_msgctl AUE_MSGCTL #define FREEBSD32_SYS_AUE_freebsd7_freebsd32_msgctl AUE_MSGCTL
@ -1335,7 +1362,7 @@ int freebsd11_freebsd32_mknodat(struct thread *, struct freebsd11_freebsd32_mkno
#define FREEBSD32_SYS_AUE_freebsd32_swapcontext AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_swapcontext AUE_NULL
#define FREEBSD32_SYS_AUE_freebsd32_ksem_timedwait AUE_SEMWAIT #define FREEBSD32_SYS_AUE_freebsd32_ksem_timedwait AUE_SEMWAIT
#define FREEBSD32_SYS_AUE_freebsd32_thr_suspend AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_thr_suspend AUE_NULL
#define FREEBSD32_SYS_AUE_freebsd32_umtx_op AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32__umtx_op AUE_NULL
#define FREEBSD32_SYS_AUE_freebsd32_thr_new AUE_THR_NEW #define FREEBSD32_SYS_AUE_freebsd32_thr_new AUE_THR_NEW
#define FREEBSD32_SYS_AUE_freebsd32_sigqueue AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_sigqueue AUE_NULL
#define FREEBSD32_SYS_AUE_freebsd32_kmq_open AUE_MQ_OPEN #define FREEBSD32_SYS_AUE_freebsd32_kmq_open AUE_MQ_OPEN
@ -1364,7 +1391,6 @@ int freebsd11_freebsd32_mknodat(struct thread *, struct freebsd11_freebsd32_mkno
#define FREEBSD32_SYS_AUE_freebsd32_fexecve AUE_FEXECVE #define FREEBSD32_SYS_AUE_freebsd32_fexecve AUE_FEXECVE
#define FREEBSD32_SYS_AUE_freebsd11_freebsd32_fstatat AUE_FSTATAT #define FREEBSD32_SYS_AUE_freebsd11_freebsd32_fstatat AUE_FSTATAT
#define FREEBSD32_SYS_AUE_freebsd32_futimesat AUE_FUTIMESAT #define FREEBSD32_SYS_AUE_freebsd32_futimesat AUE_FUTIMESAT
#define FREEBSD32_SYS_AUE_freebsd11_freebsd32_mknodat AUE_MKNODAT
#define FREEBSD32_SYS_AUE_freebsd32_jail_get AUE_JAIL_GET #define FREEBSD32_SYS_AUE_freebsd32_jail_get AUE_JAIL_GET
#define FREEBSD32_SYS_AUE_freebsd32_jail_set AUE_JAIL_SET #define FREEBSD32_SYS_AUE_freebsd32_jail_set AUE_JAIL_SET
#define FREEBSD32_SYS_AUE_freebsd32_semctl AUE_SEMCTL #define FREEBSD32_SYS_AUE_freebsd32_semctl AUE_SEMCTL
@ -1388,6 +1414,8 @@ int freebsd11_freebsd32_mknodat(struct thread *, struct freebsd11_freebsd32_mkno
#define FREEBSD32_SYS_AUE_freebsd32_fstat AUE_FSTAT #define FREEBSD32_SYS_AUE_freebsd32_fstat AUE_FSTAT
#define FREEBSD32_SYS_AUE_freebsd32_fstatat AUE_FSTATAT #define FREEBSD32_SYS_AUE_freebsd32_fstatat AUE_FSTATAT
#define FREEBSD32_SYS_AUE_freebsd32_fhstat AUE_FHSTAT #define FREEBSD32_SYS_AUE_freebsd32_fhstat AUE_FHSTAT
#define FREEBSD32_SYS_AUE_freebsd32_mknodat AUE_MKNODAT
#define FREEBSD32_SYS_AUE_freebsd32_mknodat AUE_MKNODAT
#define FREEBSD32_SYS_AUE_freebsd32_kevent AUE_KEVENT #define FREEBSD32_SYS_AUE_freebsd32_kevent AUE_KEVENT
#define FREEBSD32_SYS_AUE_freebsd32_cpuset_getdomain AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_cpuset_getdomain AUE_NULL
#define FREEBSD32_SYS_AUE_freebsd32_cpuset_setdomain AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_cpuset_setdomain AUE_NULL

View File

@ -19,7 +19,7 @@
/* 11 is obsolete execv */ /* 11 is obsolete execv */
#define FREEBSD32_SYS_chdir 12 #define FREEBSD32_SYS_chdir 12
#define FREEBSD32_SYS_fchdir 13 #define FREEBSD32_SYS_fchdir 13
#define FREEBSD32_SYS_freebsd11_freebsd32_mknod 14 #define FREEBSD32_SYS_freebsd11_mknod 14
#define FREEBSD32_SYS_chmod 15 #define FREEBSD32_SYS_chmod 15
#define FREEBSD32_SYS_chown 16 #define FREEBSD32_SYS_chown 16
#define FREEBSD32_SYS_break 17 #define FREEBSD32_SYS_break 17
@ -188,7 +188,7 @@
/* 199 is freebsd6 freebsd32_lseek */ /* 199 is freebsd6 freebsd32_lseek */
/* 200 is freebsd6 freebsd32_truncate */ /* 200 is freebsd6 freebsd32_truncate */
/* 201 is freebsd6 freebsd32_ftruncate */ /* 201 is freebsd6 freebsd32_ftruncate */
#define FREEBSD32_SYS_freebsd32_sysctl 202 #define FREEBSD32_SYS_freebsd32___sysctl 202
#define FREEBSD32_SYS_mlock 203 #define FREEBSD32_SYS_mlock 203
#define FREEBSD32_SYS_munlock 204 #define FREEBSD32_SYS_munlock 204
#define FREEBSD32_SYS_undelete 205 #define FREEBSD32_SYS_undelete 205
@ -374,7 +374,7 @@
#define FREEBSD32_SYS_getaudit_addr 451 #define FREEBSD32_SYS_getaudit_addr 451
#define FREEBSD32_SYS_setaudit_addr 452 #define FREEBSD32_SYS_setaudit_addr 452
#define FREEBSD32_SYS_auditctl 453 #define FREEBSD32_SYS_auditctl 453
#define FREEBSD32_SYS_freebsd32_umtx_op 454 #define FREEBSD32_SYS_freebsd32__umtx_op 454
#define FREEBSD32_SYS_freebsd32_thr_new 455 #define FREEBSD32_SYS_freebsd32_thr_new 455
#define FREEBSD32_SYS_freebsd32_sigqueue 456 #define FREEBSD32_SYS_freebsd32_sigqueue 456
#define FREEBSD32_SYS_freebsd32_kmq_open 457 #define FREEBSD32_SYS_freebsd32_kmq_open 457
@ -421,7 +421,7 @@
#define FREEBSD32_SYS_linkat 495 #define FREEBSD32_SYS_linkat 495
#define FREEBSD32_SYS_mkdirat 496 #define FREEBSD32_SYS_mkdirat 496
#define FREEBSD32_SYS_mkfifoat 497 #define FREEBSD32_SYS_mkfifoat 497
#define FREEBSD32_SYS_freebsd11_freebsd32_mknodat 498 #define FREEBSD32_SYS_freebsd11_mknodat 498
#define FREEBSD32_SYS_openat 499 #define FREEBSD32_SYS_openat 499
#define FREEBSD32_SYS_readlinkat 500 #define FREEBSD32_SYS_readlinkat 500
#define FREEBSD32_SYS_renameat 501 #define FREEBSD32_SYS_renameat 501
@ -484,7 +484,8 @@
#define FREEBSD32_SYS_fstatfs 556 #define FREEBSD32_SYS_fstatfs 556
#define FREEBSD32_SYS_getfsstat 557 #define FREEBSD32_SYS_getfsstat 557
#define FREEBSD32_SYS_fhstatfs 558 #define FREEBSD32_SYS_fhstatfs 558
#define FREEBSD32_SYS_mknodat 559 #define FREEBSD32_SYS_freebsd32_mknodat 559
#define FREEBSD32_SYS_freebsd32_mknodat 559
#define FREEBSD32_SYS_freebsd32_kevent 560 #define FREEBSD32_SYS_freebsd32_kevent 560
#define FREEBSD32_SYS_freebsd32_cpuset_getdomain 561 #define FREEBSD32_SYS_freebsd32_cpuset_getdomain 561
#define FREEBSD32_SYS_freebsd32_cpuset_setdomain 562 #define FREEBSD32_SYS_freebsd32_cpuset_setdomain 562

View File

@ -23,7 +23,7 @@ const char *freebsd32_syscallnames[] = {
"obs_execv", /* 11 = obsolete execv */ "obs_execv", /* 11 = obsolete execv */
"chdir", /* 12 = chdir */ "chdir", /* 12 = chdir */
"fchdir", /* 13 = fchdir */ "fchdir", /* 13 = fchdir */
"compat11.freebsd32_mknod", /* 14 = freebsd11 freebsd32_mknod */ "compat11.mknod", /* 14 = freebsd11 mknod */
"chmod", /* 15 = chmod */ "chmod", /* 15 = chmod */
"chown", /* 16 = chown */ "chown", /* 16 = chown */
"break", /* 17 = break */ "break", /* 17 = break */
@ -211,7 +211,7 @@ const char *freebsd32_syscallnames[] = {
"compat6.freebsd32_lseek", /* 199 = freebsd6 freebsd32_lseek */ "compat6.freebsd32_lseek", /* 199 = freebsd6 freebsd32_lseek */
"compat6.freebsd32_truncate", /* 200 = freebsd6 freebsd32_truncate */ "compat6.freebsd32_truncate", /* 200 = freebsd6 freebsd32_truncate */
"compat6.freebsd32_ftruncate", /* 201 = freebsd6 freebsd32_ftruncate */ "compat6.freebsd32_ftruncate", /* 201 = freebsd6 freebsd32_ftruncate */
"freebsd32_sysctl", /* 202 = freebsd32_sysctl */ "freebsd32___sysctl", /* 202 = freebsd32___sysctl */
"mlock", /* 203 = mlock */ "mlock", /* 203 = mlock */
"munlock", /* 204 = munlock */ "munlock", /* 204 = munlock */
"undelete", /* 205 = undelete */ "undelete", /* 205 = undelete */
@ -463,7 +463,7 @@ const char *freebsd32_syscallnames[] = {
"getaudit_addr", /* 451 = getaudit_addr */ "getaudit_addr", /* 451 = getaudit_addr */
"setaudit_addr", /* 452 = setaudit_addr */ "setaudit_addr", /* 452 = setaudit_addr */
"auditctl", /* 453 = auditctl */ "auditctl", /* 453 = auditctl */
"freebsd32_umtx_op", /* 454 = freebsd32_umtx_op */ "freebsd32__umtx_op", /* 454 = freebsd32__umtx_op */
"freebsd32_thr_new", /* 455 = freebsd32_thr_new */ "freebsd32_thr_new", /* 455 = freebsd32_thr_new */
"freebsd32_sigqueue", /* 456 = freebsd32_sigqueue */ "freebsd32_sigqueue", /* 456 = freebsd32_sigqueue */
"freebsd32_kmq_open", /* 457 = freebsd32_kmq_open */ "freebsd32_kmq_open", /* 457 = freebsd32_kmq_open */
@ -520,7 +520,7 @@ const char *freebsd32_syscallnames[] = {
"linkat", /* 495 = linkat */ "linkat", /* 495 = linkat */
"mkdirat", /* 496 = mkdirat */ "mkdirat", /* 496 = mkdirat */
"mkfifoat", /* 497 = mkfifoat */ "mkfifoat", /* 497 = mkfifoat */
"compat11.freebsd32_mknodat", /* 498 = freebsd11 freebsd32_mknodat */ "compat11.mknodat", /* 498 = freebsd11 mknodat */
"openat", /* 499 = openat */ "openat", /* 499 = openat */
"readlinkat", /* 500 = readlinkat */ "readlinkat", /* 500 = readlinkat */
"renameat", /* 501 = renameat */ "renameat", /* 501 = renameat */
@ -591,7 +591,11 @@ const char *freebsd32_syscallnames[] = {
"fstatfs", /* 556 = fstatfs */ "fstatfs", /* 556 = fstatfs */
"getfsstat", /* 557 = getfsstat */ "getfsstat", /* 557 = getfsstat */
"fhstatfs", /* 558 = fhstatfs */ "fhstatfs", /* 558 = fhstatfs */
"mknodat", /* 559 = mknodat */ #ifdef PAD64_REQUIRED
"freebsd32_mknodat", /* 559 = freebsd32_mknodat */
#else
"freebsd32_mknodat", /* 559 = freebsd32_mknodat */
#endif
"freebsd32_kevent", /* 560 = freebsd32_kevent */ "freebsd32_kevent", /* 560 = freebsd32_kevent */
"freebsd32_cpuset_getdomain", /* 561 = freebsd32_cpuset_getdomain */ "freebsd32_cpuset_getdomain", /* 561 = freebsd32_cpuset_getdomain */
"freebsd32_cpuset_setdomain", /* 562 = freebsd32_cpuset_setdomain */ "freebsd32_cpuset_setdomain", /* 562 = freebsd32_cpuset_setdomain */

View File

@ -70,10 +70,10 @@ struct sysent freebsd32_sysent[] = {
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 11 = obsolete execv */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 11 = obsolete execv */
{ AS(chdir_args), (sy_call_t *)sys_chdir, AUE_CHDIR, NULL, 0, 0, 0, SY_THR_STATIC }, /* 12 = chdir */ { AS(chdir_args), (sy_call_t *)sys_chdir, AUE_CHDIR, NULL, 0, 0, 0, SY_THR_STATIC }, /* 12 = chdir */
{ AS(fchdir_args), (sy_call_t *)sys_fchdir, AUE_FCHDIR, NULL, 0, 0, 0, SY_THR_STATIC }, /* 13 = fchdir */ { AS(fchdir_args), (sy_call_t *)sys_fchdir, AUE_FCHDIR, NULL, 0, 0, 0, SY_THR_STATIC }, /* 13 = fchdir */
{ compat11(AS(freebsd11_freebsd32_mknod_args),freebsd32_mknod), AUE_MKNOD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 14 = freebsd11 freebsd32_mknod */ { compat11(AS(freebsd11_mknod_args),mknod), AUE_MKNOD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 14 = freebsd11 mknod */
{ AS(chmod_args), (sy_call_t *)sys_chmod, AUE_CHMOD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 15 = chmod */ { AS(chmod_args), (sy_call_t *)sys_chmod, AUE_CHMOD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 15 = chmod */
{ AS(chown_args), (sy_call_t *)sys_chown, AUE_CHOWN, NULL, 0, 0, 0, SY_THR_STATIC }, /* 16 = chown */ { AS(chown_args), (sy_call_t *)sys_chown, AUE_CHOWN, NULL, 0, 0, 0, SY_THR_STATIC }, /* 16 = chown */
{ AS(break_args), (sy_call_t *)sys_break, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 17 = break */ { AS(break_args), (sy_call_t *)sys_break, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 17 = break */
{ compat4(AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat), AUE_GETFSSTAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 18 = freebsd4 freebsd32_getfsstat */ { compat4(AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat), AUE_GETFSSTAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 18 = freebsd4 freebsd32_getfsstat */
{ compat(AS(ofreebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 19 = old freebsd32_lseek */ { compat(AS(ofreebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 19 = old freebsd32_lseek */
{ 0, (sy_call_t *)sys_getpid, AUE_GETPID, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 20 = getpid */ { 0, (sy_call_t *)sys_getpid, AUE_GETPID, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 20 = getpid */
@ -104,7 +104,7 @@ struct sysent freebsd32_sysent[] = {
{ AS(ktrace_args), (sy_call_t *)sys_ktrace, AUE_KTRACE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 45 = ktrace */ { AS(ktrace_args), (sy_call_t *)sys_ktrace, AUE_KTRACE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 45 = ktrace */
{ compat(AS(ofreebsd32_sigaction_args),freebsd32_sigaction), AUE_SIGACTION, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = old freebsd32_sigaction */ { compat(AS(ofreebsd32_sigaction_args),freebsd32_sigaction), AUE_SIGACTION, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = old freebsd32_sigaction */
{ 0, (sy_call_t *)sys_getgid, AUE_GETGID, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = getgid */ { 0, (sy_call_t *)sys_getgid, AUE_GETGID, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = getgid */
{ compat(AS(ofreebsd32_sigprocmask_args),freebsd32_sigprocmask), AUE_SIGPROCMASK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 48 = old freebsd32_sigprocmask */ { compat(AS(ofreebsd32_sigprocmask_args),freebsd32_sigprocmask), AUE_SIGPROCMASK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = old freebsd32_sigprocmask */
{ AS(getlogin_args), (sy_call_t *)sys_getlogin, AUE_GETLOGIN, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = getlogin */ { AS(getlogin_args), (sy_call_t *)sys_getlogin, AUE_GETLOGIN, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = getlogin */
{ AS(setlogin_args), (sy_call_t *)sys_setlogin, AUE_SETLOGIN, NULL, 0, 0, 0, SY_THR_STATIC }, /* 50 = setlogin */ { AS(setlogin_args), (sy_call_t *)sys_setlogin, AUE_SETLOGIN, NULL, 0, 0, 0, SY_THR_STATIC }, /* 50 = setlogin */
{ AS(acct_args), (sy_call_t *)sys_acct, AUE_ACCT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 51 = acct */ { AS(acct_args), (sy_call_t *)sys_acct, AUE_ACCT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 51 = acct */
@ -127,7 +127,7 @@ struct sysent freebsd32_sysent[] = {
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 68 = obsolete vwrite */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 68 = obsolete vwrite */
{ AS(sbrk_args), (sy_call_t *)sys_sbrk, AUE_SBRK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 69 = sbrk */ { AS(sbrk_args), (sy_call_t *)sys_sbrk, AUE_SBRK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 69 = sbrk */
{ AS(sstk_args), (sy_call_t *)sys_sstk, AUE_SSTK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 70 = sstk */ { AS(sstk_args), (sy_call_t *)sys_sstk, AUE_SSTK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 70 = sstk */
{ compat(AS(ommap_args),mmap), AUE_MMAP, NULL, 0, 0, 0, SY_THR_STATIC }, /* 71 = old mmap */ { compat(AS(ommap_args),mmap), AUE_MMAP, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 71 = old mmap */
{ compat11(AS(freebsd11_vadvise_args),vadvise), AUE_O_VADVISE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 72 = freebsd11 vadvise */ { compat11(AS(freebsd11_vadvise_args),vadvise), AUE_O_VADVISE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 72 = freebsd11 vadvise */
{ AS(munmap_args), (sy_call_t *)sys_munmap, AUE_MUNMAP, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 73 = munmap */ { AS(munmap_args), (sy_call_t *)sys_munmap, AUE_MUNMAP, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 73 = munmap */
{ AS(freebsd32_mprotect_args), (sy_call_t *)freebsd32_mprotect, AUE_MPROTECT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 74 = freebsd32_mprotect */ { AS(freebsd32_mprotect_args), (sy_call_t *)freebsd32_mprotect, AUE_MPROTECT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 74 = freebsd32_mprotect */
@ -167,8 +167,8 @@ struct sysent freebsd32_sysent[] = {
{ compat(AS(ofreebsd32_sigvec_args),freebsd32_sigvec), AUE_O_SIGVEC, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 108 = old freebsd32_sigvec */ { compat(AS(ofreebsd32_sigvec_args),freebsd32_sigvec), AUE_O_SIGVEC, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 108 = old freebsd32_sigvec */
{ compat(AS(ofreebsd32_sigblock_args),freebsd32_sigblock), AUE_O_SIGBLOCK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 109 = old freebsd32_sigblock */ { compat(AS(ofreebsd32_sigblock_args),freebsd32_sigblock), AUE_O_SIGBLOCK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 109 = old freebsd32_sigblock */
{ compat(AS(ofreebsd32_sigsetmask_args),freebsd32_sigsetmask), AUE_O_SIGSETMASK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 110 = old freebsd32_sigsetmask */ { compat(AS(ofreebsd32_sigsetmask_args),freebsd32_sigsetmask), AUE_O_SIGSETMASK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 110 = old freebsd32_sigsetmask */
{ compat(AS(ofreebsd32_sigsuspend_args),freebsd32_sigsuspend), AUE_SIGSUSPEND, NULL, 0, 0, 0, SY_THR_STATIC }, /* 111 = old freebsd32_sigsuspend */ { compat(AS(ofreebsd32_sigsuspend_args),freebsd32_sigsuspend), AUE_SIGSUSPEND, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 111 = old freebsd32_sigsuspend */
{ compat(AS(ofreebsd32_sigstack_args),freebsd32_sigstack), AUE_O_SIGSTACK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 112 = old freebsd32_sigstack */ { compat(AS(ofreebsd32_sigstack_args),freebsd32_sigstack), AUE_O_SIGSTACK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 112 = old freebsd32_sigstack */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 113 = obsolete orecvmsg */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 113 = obsolete orecvmsg */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 114 = obsolete osendmsg */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 114 = obsolete osendmsg */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 115 = obsolete vtrace */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 115 = obsolete vtrace */
@ -214,7 +214,7 @@ struct sysent freebsd32_sysent[] = {
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 155 = nfssvc */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 155 = nfssvc */
{ compat(AS(ofreebsd32_getdirentries_args),freebsd32_getdirentries), AUE_GETDIRENTRIES, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 156 = old freebsd32_getdirentries */ { compat(AS(ofreebsd32_getdirentries_args),freebsd32_getdirentries), AUE_GETDIRENTRIES, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 156 = old freebsd32_getdirentries */
{ compat4(AS(freebsd4_freebsd32_statfs_args),freebsd32_statfs), AUE_STATFS, NULL, 0, 0, 0, SY_THR_STATIC }, /* 157 = freebsd4 freebsd32_statfs */ { compat4(AS(freebsd4_freebsd32_statfs_args),freebsd32_statfs), AUE_STATFS, NULL, 0, 0, 0, SY_THR_STATIC }, /* 157 = freebsd4 freebsd32_statfs */
{ compat4(AS(freebsd4_freebsd32_fstatfs_args),freebsd32_fstatfs), AUE_FSTATFS, NULL, 0, 0, 0, SY_THR_STATIC }, /* 158 = freebsd4 freebsd32_fstatfs */ { compat4(AS(freebsd4_freebsd32_fstatfs_args),freebsd32_fstatfs), AUE_FSTATFS, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 158 = freebsd4 freebsd32_fstatfs */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 159 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 159 = nosys */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 160 = lgetfh */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 160 = lgetfh */
{ AS(getfh_args), (sy_call_t *)sys_getfh, AUE_NFS_GETFH, NULL, 0, 0, 0, SY_THR_STATIC }, /* 161 = getfh */ { AS(getfh_args), (sy_call_t *)sys_getfh, AUE_NFS_GETFH, NULL, 0, 0, 0, SY_THR_STATIC }, /* 161 = getfh */
@ -258,7 +258,7 @@ struct sysent freebsd32_sysent[] = {
{ compat6(AS(freebsd6_freebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 199 = freebsd6 freebsd32_lseek */ { compat6(AS(freebsd6_freebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 199 = freebsd6 freebsd32_lseek */
{ compat6(AS(freebsd6_freebsd32_truncate_args),freebsd32_truncate), AUE_TRUNCATE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 200 = freebsd6 freebsd32_truncate */ { compat6(AS(freebsd6_freebsd32_truncate_args),freebsd32_truncate), AUE_TRUNCATE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 200 = freebsd6 freebsd32_truncate */
{ compat6(AS(freebsd6_freebsd32_ftruncate_args),freebsd32_ftruncate), AUE_FTRUNCATE, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 201 = freebsd6 freebsd32_ftruncate */ { compat6(AS(freebsd6_freebsd32_ftruncate_args),freebsd32_ftruncate), AUE_FTRUNCATE, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 201 = freebsd6 freebsd32_ftruncate */
{ AS(freebsd32_sysctl_args), (sy_call_t *)freebsd32_sysctl, AUE_SYSCTL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 202 = freebsd32_sysctl */ { AS(freebsd32___sysctl_args), (sy_call_t *)freebsd32___sysctl, AUE_SYSCTL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 202 = freebsd32___sysctl */
{ AS(mlock_args), (sy_call_t *)sys_mlock, AUE_MLOCK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 203 = mlock */ { AS(mlock_args), (sy_call_t *)sys_mlock, AUE_MLOCK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 203 = mlock */
{ AS(munlock_args), (sy_call_t *)sys_munlock, AUE_MUNLOCK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 204 = munlock */ { AS(munlock_args), (sy_call_t *)sys_munlock, AUE_MUNLOCK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 204 = munlock */
{ AS(undelete_args), (sy_call_t *)sys_undelete, AUE_UNDELETE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 205 = undelete */ { AS(undelete_args), (sy_call_t *)sys_undelete, AUE_UNDELETE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 205 = undelete */
@ -328,7 +328,7 @@ struct sysent freebsd32_sysent[] = {
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 269 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 269 = nosys */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 270 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 270 = nosys */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 271 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 271 = nosys */
{ compat11(AS(freebsd11_freebsd32_getdents_args),freebsd32_getdents), AUE_O_GETDENTS, NULL, 0, 0, 0, SY_THR_STATIC }, /* 272 = freebsd11 freebsd32_getdents */ { compat11(AS(freebsd11_freebsd32_getdents_args),freebsd32_getdents), AUE_O_GETDENTS, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 272 = freebsd11 freebsd32_getdents */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 273 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 273 = nosys */
{ AS(lchmod_args), (sy_call_t *)sys_lchmod, AUE_LCHMOD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 274 = lchmod */ { AS(lchmod_args), (sy_call_t *)sys_lchmod, AUE_LCHMOD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 274 = lchmod */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 275 = obsolete netbsd_lchown */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 275 = obsolete netbsd_lchown */
@ -390,7 +390,7 @@ struct sysent freebsd32_sysent[] = {
{ 0, (sy_call_t *)sys_sched_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 331 = sched_yield */ { 0, (sy_call_t *)sys_sched_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 331 = sched_yield */
{ AS(sched_get_priority_max_args), (sy_call_t *)sys_sched_get_priority_max, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 332 = sched_get_priority_max */ { AS(sched_get_priority_max_args), (sy_call_t *)sys_sched_get_priority_max, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 332 = sched_get_priority_max */
{ AS(sched_get_priority_min_args), (sy_call_t *)sys_sched_get_priority_min, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 333 = sched_get_priority_min */ { AS(sched_get_priority_min_args), (sy_call_t *)sys_sched_get_priority_min, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 333 = sched_get_priority_min */
{ AS(freebsd32_sched_rr_get_interval_args), (sy_call_t *)freebsd32_sched_rr_get_interval, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 334 = freebsd32_sched_rr_get_interval */ { AS(freebsd32_sched_rr_get_interval_args), (sy_call_t *)freebsd32_sched_rr_get_interval, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 334 = freebsd32_sched_rr_get_interval */
{ AS(utrace_args), (sy_call_t *)sys_utrace, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 335 = utrace */ { AS(utrace_args), (sy_call_t *)sys_utrace, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 335 = utrace */
{ compat4(AS(freebsd4_freebsd32_sendfile_args),freebsd32_sendfile), AUE_SENDFILE, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 336 = freebsd4 freebsd32_sendfile */ { compat4(AS(freebsd4_freebsd32_sendfile_args),freebsd32_sendfile), AUE_SENDFILE, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 336 = freebsd4 freebsd32_sendfile */
{ AS(kldsym_args), (sy_call_t *)sys_kldsym, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = kldsym */ { AS(kldsym_args), (sy_call_t *)sys_kldsym, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = kldsym */
@ -399,7 +399,7 @@ struct sysent freebsd32_sysent[] = {
{ AS(sigprocmask_args), (sy_call_t *)sys_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 340 = sigprocmask */ { AS(sigprocmask_args), (sy_call_t *)sys_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 340 = sigprocmask */
{ AS(sigsuspend_args), (sy_call_t *)sys_sigsuspend, AUE_SIGSUSPEND, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 341 = sigsuspend */ { AS(sigsuspend_args), (sy_call_t *)sys_sigsuspend, AUE_SIGSUSPEND, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 341 = sigsuspend */
{ compat4(AS(freebsd4_freebsd32_sigaction_args),freebsd32_sigaction), AUE_SIGACTION, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 342 = freebsd4 freebsd32_sigaction */ { compat4(AS(freebsd4_freebsd32_sigaction_args),freebsd32_sigaction), AUE_SIGACTION, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 342 = freebsd4 freebsd32_sigaction */
{ AS(sigpending_args), (sy_call_t *)sys_sigpending, AUE_SIGPENDING, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = sigpending */ { AS(sigpending_args), (sy_call_t *)sys_sigpending, AUE_SIGPENDING, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 343 = sigpending */
{ compat4(AS(freebsd4_freebsd32_sigreturn_args),freebsd32_sigreturn), AUE_SIGRETURN, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 344 = freebsd4 freebsd32_sigreturn */ { compat4(AS(freebsd4_freebsd32_sigreturn_args),freebsd32_sigreturn), AUE_SIGRETURN, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 344 = freebsd4 freebsd32_sigreturn */
{ AS(freebsd32_sigtimedwait_args), (sy_call_t *)freebsd32_sigtimedwait, AUE_SIGWAIT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 345 = freebsd32_sigtimedwait */ { AS(freebsd32_sigtimedwait_args), (sy_call_t *)freebsd32_sigtimedwait, AUE_SIGWAIT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 345 = freebsd32_sigtimedwait */
{ AS(freebsd32_sigwaitinfo_args), (sy_call_t *)freebsd32_sigwaitinfo, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 346 = freebsd32_sigwaitinfo */ { AS(freebsd32_sigwaitinfo_args), (sy_call_t *)freebsd32_sigwaitinfo, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 346 = freebsd32_sigwaitinfo */
@ -510,9 +510,9 @@ struct sysent freebsd32_sysent[] = {
{ AS(getaudit_addr_args), (sy_call_t *)sys_getaudit_addr, AUE_GETAUDIT_ADDR, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 451 = getaudit_addr */ { AS(getaudit_addr_args), (sy_call_t *)sys_getaudit_addr, AUE_GETAUDIT_ADDR, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 451 = getaudit_addr */
{ AS(setaudit_addr_args), (sy_call_t *)sys_setaudit_addr, AUE_SETAUDIT_ADDR, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 452 = setaudit_addr */ { AS(setaudit_addr_args), (sy_call_t *)sys_setaudit_addr, AUE_SETAUDIT_ADDR, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 452 = setaudit_addr */
{ AS(auditctl_args), (sy_call_t *)sys_auditctl, AUE_AUDITCTL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 453 = auditctl */ { AS(auditctl_args), (sy_call_t *)sys_auditctl, AUE_AUDITCTL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 453 = auditctl */
{ AS(freebsd32_umtx_op_args), (sy_call_t *)freebsd32_umtx_op, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 454 = freebsd32_umtx_op */ { AS(freebsd32__umtx_op_args), (sy_call_t *)freebsd32__umtx_op, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 454 = freebsd32__umtx_op */
{ AS(freebsd32_thr_new_args), (sy_call_t *)freebsd32_thr_new, AUE_THR_NEW, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 455 = freebsd32_thr_new */ { AS(freebsd32_thr_new_args), (sy_call_t *)freebsd32_thr_new, AUE_THR_NEW, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 455 = freebsd32_thr_new */
{ AS(freebsd32_sigqueue_args), (sy_call_t *)freebsd32_sigqueue, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 456 = freebsd32_sigqueue */ { AS(freebsd32_sigqueue_args), (sy_call_t *)freebsd32_sigqueue, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 456 = freebsd32_sigqueue */
{ AS(freebsd32_kmq_open_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 457 = freebsd32_kmq_open */ { AS(freebsd32_kmq_open_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 457 = freebsd32_kmq_open */
{ AS(freebsd32_kmq_setattr_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_ABSENT }, /* 458 = freebsd32_kmq_setattr */ { AS(freebsd32_kmq_setattr_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_ABSENT }, /* 458 = freebsd32_kmq_setattr */
{ AS(freebsd32_kmq_timedreceive_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_ABSENT }, /* 459 = freebsd32_kmq_timedreceive */ { AS(freebsd32_kmq_timedreceive_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_ABSENT }, /* 459 = freebsd32_kmq_timedreceive */
@ -521,7 +521,7 @@ struct sysent freebsd32_sysent[] = {
{ AS(kmq_unlink_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 462 = kmq_unlink */ { AS(kmq_unlink_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 462 = kmq_unlink */
{ AS(abort2_args), (sy_call_t *)sys_abort2, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 463 = abort2 */ { AS(abort2_args), (sy_call_t *)sys_abort2, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 463 = abort2 */
{ AS(thr_set_name_args), (sy_call_t *)sys_thr_set_name, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 464 = thr_set_name */ { AS(thr_set_name_args), (sy_call_t *)sys_thr_set_name, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 464 = thr_set_name */
{ AS(freebsd32_aio_fsync_args), (sy_call_t *)freebsd32_aio_fsync, AUE_AIO_FSYNC, NULL, 0, 0, 0, SY_THR_STATIC }, /* 465 = freebsd32_aio_fsync */ { AS(freebsd32_aio_fsync_args), (sy_call_t *)freebsd32_aio_fsync, AUE_AIO_FSYNC, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 465 = freebsd32_aio_fsync */
{ AS(rtprio_thread_args), (sy_call_t *)sys_rtprio_thread, AUE_RTPRIO, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 466 = rtprio_thread */ { AS(rtprio_thread_args), (sy_call_t *)sys_rtprio_thread, AUE_RTPRIO, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 466 = rtprio_thread */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 467 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 467 = nosys */
{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 468 = nosys */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 468 = nosys */
@ -567,7 +567,7 @@ struct sysent freebsd32_sysent[] = {
{ AS(linkat_args), (sy_call_t *)sys_linkat, AUE_LINKAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 495 = linkat */ { AS(linkat_args), (sy_call_t *)sys_linkat, AUE_LINKAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 495 = linkat */
{ AS(mkdirat_args), (sy_call_t *)sys_mkdirat, AUE_MKDIRAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 496 = mkdirat */ { AS(mkdirat_args), (sy_call_t *)sys_mkdirat, AUE_MKDIRAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 496 = mkdirat */
{ AS(mkfifoat_args), (sy_call_t *)sys_mkfifoat, AUE_MKFIFOAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 497 = mkfifoat */ { AS(mkfifoat_args), (sy_call_t *)sys_mkfifoat, AUE_MKFIFOAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 497 = mkfifoat */
{ compat11(AS(freebsd11_freebsd32_mknodat_args),freebsd32_mknodat), AUE_MKNODAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 498 = freebsd11 freebsd32_mknodat */ { compat11(AS(freebsd11_mknodat_args),mknodat), AUE_MKNODAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 498 = freebsd11 mknodat */
{ AS(openat_args), (sy_call_t *)sys_openat, AUE_OPENAT_RWTC, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 499 = openat */ { AS(openat_args), (sy_call_t *)sys_openat, AUE_OPENAT_RWTC, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 499 = openat */
{ AS(readlinkat_args), (sy_call_t *)sys_readlinkat, AUE_READLINKAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 500 = readlinkat */ { AS(readlinkat_args), (sy_call_t *)sys_readlinkat, AUE_READLINKAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 500 = readlinkat */
{ AS(renameat_args), (sy_call_t *)sys_renameat, AUE_RENAMEAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 501 = renameat */ { AS(renameat_args), (sy_call_t *)sys_renameat, AUE_RENAMEAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 501 = renameat */
@ -638,7 +638,11 @@ struct sysent freebsd32_sysent[] = {
{ AS(fstatfs_args), (sy_call_t *)sys_fstatfs, AUE_FSTATFS, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 556 = fstatfs */ { AS(fstatfs_args), (sy_call_t *)sys_fstatfs, AUE_FSTATFS, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 556 = fstatfs */
{ AS(getfsstat_args), (sy_call_t *)sys_getfsstat, AUE_GETFSSTAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 557 = getfsstat */ { AS(getfsstat_args), (sy_call_t *)sys_getfsstat, AUE_GETFSSTAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 557 = getfsstat */
{ AS(fhstatfs_args), (sy_call_t *)sys_fhstatfs, AUE_FHSTATFS, NULL, 0, 0, 0, SY_THR_STATIC }, /* 558 = fhstatfs */ { AS(fhstatfs_args), (sy_call_t *)sys_fhstatfs, AUE_FHSTATFS, NULL, 0, 0, 0, SY_THR_STATIC }, /* 558 = fhstatfs */
{ AS(mknodat_args), (sy_call_t *)sys_mknodat, AUE_MKNODAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 559 = mknodat */ #ifdef PAD64_REQUIRED
{ AS(freebsd32_mknodat_args), (sy_call_t *)freebsd32_mknodat, AUE_MKNODAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 559 = freebsd32_mknodat */
#else
{ AS(freebsd32_mknodat_args), (sy_call_t *)freebsd32_mknodat, AUE_MKNODAT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 559 = freebsd32_mknodat */
#endif
{ AS(freebsd32_kevent_args), (sy_call_t *)freebsd32_kevent, AUE_KEVENT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 560 = freebsd32_kevent */ { AS(freebsd32_kevent_args), (sy_call_t *)freebsd32_kevent, AUE_KEVENT, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 560 = freebsd32_kevent */
{ AS(freebsd32_cpuset_getdomain_args), (sy_call_t *)freebsd32_cpuset_getdomain, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 561 = freebsd32_cpuset_getdomain */ { AS(freebsd32_cpuset_getdomain_args), (sy_call_t *)freebsd32_cpuset_getdomain, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 561 = freebsd32_cpuset_getdomain */
{ AS(freebsd32_cpuset_setdomain_args), (sy_call_t *)freebsd32_cpuset_setdomain, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 562 = freebsd32_cpuset_setdomain */ { AS(freebsd32_cpuset_setdomain_args), (sy_call_t *)freebsd32_cpuset_setdomain, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 562 = freebsd32_cpuset_setdomain */

View File

@ -935,9 +935,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 0; *n_args = 0;
break; break;
} }
/* freebsd32_sysctl */ /* freebsd32___sysctl */
case 202: { case 202: {
struct freebsd32_sysctl_args *p = params; struct freebsd32___sysctl_args *p = params;
uarg[0] = (intptr_t) p->name; /* int * */ uarg[0] = (intptr_t) p->name; /* int * */
uarg[1] = p->namelen; /* u_int */ uarg[1] = p->namelen; /* u_int */
uarg[2] = (intptr_t) p->old; /* void * */ uarg[2] = (intptr_t) p->old; /* void * */
@ -2182,9 +2182,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 1; *n_args = 1;
break; break;
} }
/* freebsd32_umtx_op */ /* freebsd32__umtx_op */
case 454: { case 454: {
struct freebsd32_umtx_op_args *p = params; struct freebsd32__umtx_op_args *p = params;
uarg[0] = (intptr_t) p->obj; /* void * */ uarg[0] = (intptr_t) p->obj; /* void * */
iarg[1] = p->op; /* int */ iarg[1] = p->op; /* int */
uarg[2] = p->val; /* u_long */ uarg[2] = p->val; /* u_long */
@ -3201,16 +3201,32 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 2; *n_args = 2;
break; break;
} }
/* mknodat */ #ifdef PAD64_REQUIRED
/* freebsd32_mknodat */
case 559: { case 559: {
struct mknodat_args *p = params; struct freebsd32_mknodat_args *p = params;
iarg[0] = p->fd; /* int */ iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* const char * */ uarg[1] = (intptr_t) p->path; /* const char * */
iarg[2] = p->mode; /* mode_t */ iarg[2] = p->mode; /* mode_t */
iarg[3] = p->dev; /* dev_t */ iarg[3] = p->pad; /* int */
*n_args = 4; uarg[4] = p->dev1; /* uint32_t */
uarg[5] = p->dev2; /* uint32_t */
*n_args = 6;
break; break;
} }
#else
/* freebsd32_mknodat */
case 559: {
struct freebsd32_mknodat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* const char * */
iarg[2] = p->mode; /* mode_t */
uarg[3] = p->dev1; /* uint32_t */
uarg[4] = p->dev2; /* uint32_t */
*n_args = 5;
break;
}
#endif
/* freebsd32_kevent */ /* freebsd32_kevent */
case 560: { case 560: {
struct freebsd32_kevent_args *p = params; struct freebsd32_kevent_args *p = params;
@ -4755,7 +4771,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
/* nosys */ /* nosys */
case 198: case 198:
break; break;
/* freebsd32_sysctl */ /* freebsd32___sysctl */
case 202: case 202:
switch(ndx) { switch(ndx) {
case 0: case 0:
@ -6765,7 +6781,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break; break;
}; };
break; break;
/* freebsd32_umtx_op */ /* freebsd32__umtx_op */
case 454: case 454:
switch(ndx) { switch(ndx) {
case 0: case 0:
@ -8642,7 +8658,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break; break;
}; };
break; break;
/* mknodat */ #ifdef PAD64_REQUIRED
/* freebsd32_mknodat */
case 559: case 559:
switch(ndx) { switch(ndx) {
case 0: case 0:
@ -8655,12 +8672,42 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
p = "mode_t"; p = "mode_t";
break; break;
case 3: case 3:
p = "dev_t"; p = "int";
break;
case 4:
p = "uint32_t";
break;
case 5:
p = "uint32_t";
break; break;
default: default:
break; break;
}; };
break; break;
#else
/* freebsd32_mknodat */
case 559:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "userland const char *";
break;
case 2:
p = "mode_t";
break;
case 3:
p = "uint32_t";
break;
case 4:
p = "uint32_t";
break;
default:
break;
};
break;
#endif
/* freebsd32_kevent */ /* freebsd32_kevent */
case 560: case 560:
switch(ndx) { switch(ndx) {
@ -9305,7 +9352,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break; break;
/* nosys */ /* nosys */
case 198: case 198:
/* freebsd32_sysctl */ /* freebsd32___sysctl */
case 202: case 202:
if (ndx == 0 || ndx == 1) if (ndx == 0 || ndx == 1)
p = "int"; p = "int";
@ -10040,7 +10087,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1) if (ndx == 0 || ndx == 1)
p = "int"; p = "int";
break; break;
/* freebsd32_umtx_op */ /* freebsd32__umtx_op */
case 454: case 454:
if (ndx == 0 || ndx == 1) if (ndx == 0 || ndx == 1)
p = "int"; p = "int";
@ -10574,11 +10621,19 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1) if (ndx == 0 || ndx == 1)
p = "int"; p = "int";
break; break;
/* mknodat */ #ifdef PAD64_REQUIRED
/* freebsd32_mknodat */
case 559: case 559:
if (ndx == 0 || ndx == 1) if (ndx == 0 || ndx == 1)
p = "int"; p = "int";
break; break;
#else
/* freebsd32_mknodat */
case 559:
if (ndx == 0 || ndx == 1)
p = "int";
break;
#endif
/* freebsd32_kevent */ /* freebsd32_kevent */
case 560: case 560:
if (ndx == 0 || ndx == 1) if (ndx == 0 || ndx == 1)

View File

@ -84,8 +84,8 @@
11 AUE_NULL OBSOL execv 11 AUE_NULL OBSOL execv
12 AUE_CHDIR NOPROTO { int chdir(const char *path); } 12 AUE_CHDIR NOPROTO { int chdir(const char *path); }
13 AUE_FCHDIR NOPROTO { int fchdir(int fd); } 13 AUE_FCHDIR NOPROTO { int fchdir(int fd); }
14 AUE_MKNOD COMPAT11 { int freebsd32_mknod(const char *path, \ 14 AUE_MKNOD COMPAT11|NOPROTO { int mknod(const char *path, \
int mode, int dev); } int mode, uint32_t dev); }
15 AUE_CHMOD NOPROTO { int chmod(const char *path, mode_t mode); } 15 AUE_CHMOD NOPROTO { int chmod(const char *path, mode_t mode); }
16 AUE_CHOWN NOPROTO { int chown(const char *path, int uid, int gid); } 16 AUE_CHOWN NOPROTO { int chown(const char *path, int uid, int gid); }
17 AUE_NULL NOPROTO { void *break(char *nsize); } 17 AUE_NULL NOPROTO { void *break(char *nsize); }
@ -386,7 +386,7 @@
uint32_t length2); } uint32_t length2); }
201 AUE_FTRUNCATE COMPAT6 { int freebsd32_ftruncate(int fd, int pad, \ 201 AUE_FTRUNCATE COMPAT6 { int freebsd32_ftruncate(int fd, int pad, \
uint32_t length1, uint32_t length2); } uint32_t length1, uint32_t length2); }
202 AUE_SYSCTL STD { int freebsd32_sysctl(int *name, \ 202 AUE_SYSCTL STD { int freebsd32___sysctl(int *name, \
u_int namelen, void *old, \ u_int namelen, void *old, \
uint32_t *oldlenp, void *new, \ uint32_t *oldlenp, void *new, \
uint32_t newlen); } uint32_t newlen); }
@ -821,7 +821,7 @@
struct auditinfo_addr *auditinfo_addr, \ struct auditinfo_addr *auditinfo_addr, \
u_int length); } u_int length); }
453 AUE_AUDITCTL NOPROTO { int auditctl(const char *path); } 453 AUE_AUDITCTL NOPROTO { int auditctl(const char *path); }
454 AUE_NULL STD { int freebsd32_umtx_op(void *obj, int op,\ 454 AUE_NULL STD { int freebsd32__umtx_op(void *obj, int op,\
u_long val, void *uaddr, \ u_long val, void *uaddr, \
void *uaddr2); } void *uaddr2); }
455 AUE_THR_NEW STD { int freebsd32_thr_new( \ 455 AUE_THR_NEW STD { int freebsd32_thr_new( \
@ -958,7 +958,7 @@
mode_t mode); } mode_t mode); }
497 AUE_MKFIFOAT NOPROTO { int mkfifoat(int fd, const char *path, \ 497 AUE_MKFIFOAT NOPROTO { int mkfifoat(int fd, const char *path, \
mode_t mode); } mode_t mode); }
498 AUE_MKNODAT COMPAT11 { int freebsd32_mknodat(int fd, \ 498 AUE_MKNODAT COMPAT11|NOPROTO { int mknodat(int fd, \
const char *path, mode_t mode, \ const char *path, mode_t mode, \
uint32_t dev); } uint32_t dev); }
499 AUE_OPENAT_RWTC NOPROTO { int openat(int fd, const char *path, \ 499 AUE_OPENAT_RWTC NOPROTO { int openat(int fd, const char *path, \
@ -1113,8 +1113,15 @@
long bufsize, int mode); } long bufsize, int mode); }
558 AUE_FHSTATFS NOPROTO { int fhstatfs(const struct fhandle *u_fhp, \ 558 AUE_FHSTATFS NOPROTO { int fhstatfs(const struct fhandle *u_fhp, \
struct statfs32 *buf); } struct statfs32 *buf); }
559 AUE_MKNODAT NOPROTO { int mknodat(int fd, const char *path, \ #ifdef PAD64_REQUIRED
mode_t mode, dev_t dev); } 559 AUE_MKNODAT STD { int freebsd32_mknodat(int fd, \
const char *path, mode_t mode, \
int pad, uint32_t dev1, uint32_t dev2); }
#else
559 AUE_MKNODAT STD { int freebsd32_mknodat(int fd, \
const char *path, mode_t mode, \
uint32_t dev1, uint32_t dev2); }
#endif
560 AUE_KEVENT STD { int freebsd32_kevent(int fd, \ 560 AUE_KEVENT STD { int freebsd32_kevent(int fd, \
const struct kevent32 *changelist, \ const struct kevent32 *changelist, \
int nchanges, \ int nchanges, \

View File

@ -58,8 +58,8 @@ all: ${DTB} ${DTBO}
.export DTC .export DTC
.for _dts in ${DTS} .for _dts in ${DTS}
${_dts:R:S/$/.dtb/}: ${_dts} ${OP_META} ${_dts:R:S/$/.dtb/}: ${_dts} ${OP_META}
@echo Generating ${.TARGET} from ${_dts} @${ECHO} Generating ${.TARGET} from ${_dts}
@${SYSDIR}/tools/fdt/make_dtb.sh ${SYSDIR} ${_dts} ${.OBJDIR} @env ECHO=${ECHO} ${SYSDIR}/tools/fdt/make_dtb.sh ${SYSDIR} ${_dts} ${.OBJDIR}
CLEANFILES+=${_dts:R:S/$/.dtb/} CLEANFILES+=${_dts:R:S/$/.dtb/}
.endfor .endfor
.endif .endif
@ -68,8 +68,8 @@ CLEANFILES+=${_dts:R:S/$/.dtb/}
.export DTC .export DTC
.for _dtso in ${DTSO} .for _dtso in ${DTSO}
${_dtso:R:S/$/.dtbo/}: ${_dtso} ${OP_META} ${_dtso:R:S/$/.dtbo/}: ${_dtso} ${OP_META}
@echo Generating ${.TARGET} from ${_dtso} @${ECHO} Generating ${.TARGET} from ${_dtso}
@${SYSDIR}/tools/fdt/make_dtbo.sh ${SYSDIR} overlays/${_dtso} ${.OBJDIR} @env ECHO=${ECHO} ${SYSDIR}/tools/fdt/make_dtbo.sh ${SYSDIR} overlays/${_dtso} ${.OBJDIR}
CLEANFILES+=${_dtso:R:S/$/.dtbo/} CLEANFILES+=${_dtso:R:S/$/.dtbo/}
.endfor .endfor
.endif .endif

View File

@ -6,7 +6,7 @@ SEARCH_DIR("/usr/lib");
SECTIONS SECTIONS
{ {
/* Read-only sections, merged into text segment: */ /* Read-only sections, merged into text segment: */
kernphys = 0x200000; kernphys = 0x200000; /* 2MB superpage size */
. = kernbase + kernphys + SIZEOF_HEADERS; . = kernbase + kernphys + SIZEOF_HEADERS;
/* /*
* Use the AT keyword in order to set the right LMA that contains * Use the AT keyword in order to set the right LMA that contains

View File

@ -83,18 +83,17 @@ git_tree_modified()
# git's internal state. The latter case is indicated by an all-zero # git's internal state. The latter case is indicated by an all-zero
# destination file hash. # destination file hash.
local fifo vcstop_abs local fifo
fifo=$(mktemp -u) fifo=$(mktemp -u)
mkfifo -m 600 $fifo mkfifo -m 600 $fifo
vcstop_abs=$(realpath $VCSTOP)
$git_cmd --work-tree=${VCSTOP} diff-index HEAD > $fifo & $git_cmd --work-tree=${VCSTOP} diff-index HEAD > $fifo &
while read smode dmode ssha dsha status file; do while read smode dmode ssha dsha status file; do
if ! expr $dsha : '^00*$' >/dev/null; then if ! expr $dsha : '^00*$' >/dev/null; then
rm $fifo rm $fifo
return 0 return 0
fi fi
if ! $git_cmd diff --quiet -- "${vcstop_abs}/${file}"; then if ! $git_cmd --work-tree=${VCSTOP} diff --quiet -- "${file}"; then
rm $fifo rm $fifo
return 0 return 0
fi fi
@ -328,7 +327,7 @@ else
VERSTR="${VERINFO}\\n ${u}@${h}:${d}\\n" VERSTR="${VERINFO}\\n ${u}@${h}:${d}\\n"
fi fi
cat << EOF > vers.c vers_content_new=$(cat << EOF
$COPYRIGHT $COPYRIGHT
#define SCCSSTR "@(#)${VERINFO}" #define SCCSSTR "@(#)${VERINFO}"
#define VERSTR "${VERSTR}" #define VERSTR "${VERSTR}"
@ -342,5 +341,10 @@ char osrelease[sizeof(RELSTR) > 32 ? sizeof(RELSTR) : 32] = RELSTR;
int osreldate = ${RELDATE}; int osreldate = ${RELDATE};
char kern_ident[] = "${i}"; char kern_ident[] = "${i}";
EOF EOF
)
vers_content_old=$(cat vers.c 2>/dev/null || true)
if [ "$vers_content_new" != "$vers_content_old" ]; then
echo "$vers_content_new" > vers.c
fi
echo $((v + 1)) > version echo $((v + 1)) > version

View File

@ -684,6 +684,7 @@ static inline int cvmx_pip_get_bsel_table_index(cvmx_wqe_t *work)
bsel_cfg.u64 = cvmx_read_csr(CVMX_PIP_BSEL_EXT_CFGX(bit)); bsel_cfg.u64 = cvmx_read_csr(CVMX_PIP_BSEL_EXT_CFGX(bit));
bsel_pos.u64 = cvmx_read_csr(CVMX_PIP_BSEL_EXT_POSX(bit)); bsel_pos.u64 = cvmx_read_csr(CVMX_PIP_BSEL_EXT_POSX(bit));
index = 0;
for (y = 0; y < 8; y++) for (y = 0; y < 8; y++)
{ {
char *ptr = (char *)cvmx_phys_to_ptr(work->packet_ptr.s.addr); char *ptr = (char *)cvmx_phys_to_ptr(work->packet_ptr.s.addr);

View File

@ -396,7 +396,7 @@ make_established(struct toepcb *toep, uint32_t snd_isn, uint32_t rcv_isn,
CTR6(KTR_CXGBE, "%s: tid %d, so %p, inp %p, tp %p, toep %p", CTR6(KTR_CXGBE, "%s: tid %d, so %p, inp %p, tp %p, toep %p",
__func__, toep->tid, so, inp, tp, toep); __func__, toep->tid, so, inp, tp, toep);
tp->t_state = TCPS_ESTABLISHED; tcp_state_change(tp, TCPS_ESTABLISHED);
tp->t_starttime = ticks; tp->t_starttime = ticks;
TCPSTAT_INC(tcps_connects); TCPSTAT_INC(tcps_connects);
@ -1303,11 +1303,11 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
/* FALLTHROUGH */ /* FALLTHROUGH */
case TCPS_ESTABLISHED: case TCPS_ESTABLISHED:
tp->t_state = TCPS_CLOSE_WAIT; tcp_state_change(tp, TCPS_CLOSE_WAIT);
break; break;
case TCPS_FIN_WAIT_1: case TCPS_FIN_WAIT_1:
tp->t_state = TCPS_CLOSING; tcp_state_change(tp, TCPS_CLOSING);
break; break;
case TCPS_FIN_WAIT_2: case TCPS_FIN_WAIT_2:
@ -1389,7 +1389,7 @@ do_close_con_rpl(struct sge_iq *iq, const struct rss_header *rss,
case TCPS_FIN_WAIT_1: case TCPS_FIN_WAIT_1:
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) if (so->so_rcv.sb_state & SBS_CANTRCVMORE)
soisdisconnected(so); soisdisconnected(so);
tp->t_state = TCPS_FIN_WAIT_2; tcp_state_change(tp, TCPS_FIN_WAIT_2);
break; break;
default: default:

View File

@ -458,7 +458,13 @@ em_isc_txd_credits_update(void *arg, uint16_t txqid, bool clear)
ntxd = scctx->isc_ntxd[0]; ntxd = scctx->isc_ntxd[0];
do { do {
delta = (int32_t)cur - (int32_t)prev; delta = (int32_t)cur - (int32_t)prev;
/*
* XXX This appears to be a hack for first-packet.
* A correct fix would prevent prev == cur in the first place.
*/
MPASS(prev == 0 || delta != 0); MPASS(prev == 0 || delta != 0);
if (prev == 0 && cur == 0)
delta += 1;
if (delta < 0) if (delta < 0)
delta += ntxd; delta += ntxd;
DPRINTF(iflib_get_dev(adapter->ctx), DPRINTF(iflib_get_dev(adapter->ctx),

View File

@ -333,7 +333,13 @@ igb_isc_txd_credits_update(void *arg, uint16_t txqid, bool clear)
ntxd = scctx->isc_ntxd[0]; ntxd = scctx->isc_ntxd[0];
do { do {
delta = (int32_t)cur - (int32_t)prev; delta = (int32_t)cur - (int32_t)prev;
/*
* XXX This appears to be a hack for first-packet.
* A correct fix would prevent prev == cur in the first place.
*/
MPASS(prev == 0 || delta != 0); MPASS(prev == 0 || delta != 0);
if (prev == 0 && cur == 0)
delta += 1;
if (delta < 0) if (delta < 0)
delta += ntxd; delta += ntxd;

View File

@ -260,7 +260,7 @@ static struct if_shared_ctx iavf_sctx_init = {
.isc_vendor_info = iavf_vendor_info_array, .isc_vendor_info = iavf_vendor_info_array,
.isc_driver_version = IAVF_DRIVER_VERSION_STRING, .isc_driver_version = IAVF_DRIVER_VERSION_STRING,
.isc_driver = &iavf_if_driver, .isc_driver = &iavf_if_driver,
.isc_flags = IFLIB_NEED_SCRATCH | IFLIB_NEED_ZERO_CSUM | IFLIB_IS_VF, .isc_flags = IFLIB_NEED_SCRATCH | IFLIB_NEED_ZERO_CSUM | IFLIB_TSO_INIT_IP | IFLIB_IS_VF,
.isc_nrxd_min = {IXL_MIN_RING}, .isc_nrxd_min = {IXL_MIN_RING},
.isc_ntxd_min = {IXL_MIN_RING}, .isc_ntxd_min = {IXL_MIN_RING},

View File

@ -323,7 +323,7 @@ static struct if_shared_ctx ixl_sctx_init = {
.isc_vendor_info = ixl_vendor_info_array, .isc_vendor_info = ixl_vendor_info_array,
.isc_driver_version = IXL_DRIVER_VERSION_STRING, .isc_driver_version = IXL_DRIVER_VERSION_STRING,
.isc_driver = &ixl_if_driver, .isc_driver = &ixl_if_driver,
.isc_flags = IFLIB_NEED_SCRATCH | IFLIB_NEED_ZERO_CSUM | IFLIB_ADMIN_ALWAYS_RUN, .isc_flags = IFLIB_NEED_SCRATCH | IFLIB_NEED_ZERO_CSUM | IFLIB_TSO_INIT_IP | IFLIB_ADMIN_ALWAYS_RUN,
.isc_nrxd_min = {IXL_MIN_RING}, .isc_nrxd_min = {IXL_MIN_RING},
.isc_ntxd_min = {IXL_MIN_RING}, .isc_ntxd_min = {IXL_MIN_RING},

View File

@ -258,6 +258,8 @@
(CSUM_IP_UDP|CSUM_IP6_UDP) (CSUM_IP_UDP|CSUM_IP6_UDP)
#define IXL_CSUM_SCTP \ #define IXL_CSUM_SCTP \
(CSUM_IP_SCTP|CSUM_IP6_SCTP) (CSUM_IP_SCTP|CSUM_IP6_SCTP)
#define IXL_CSUM_IPV4 \
(CSUM_IP|CSUM_IP_TSO)
/* Pre-11 counter(9) compatibility */ /* Pre-11 counter(9) compatibility */
#if __FreeBSD_version >= 1100036 #if __FreeBSD_version >= 1100036

View File

@ -225,7 +225,7 @@ ixl_tx_setup_offload(struct ixl_tx_queue *que,
switch (pi->ipi_etype) { switch (pi->ipi_etype) {
#ifdef INET #ifdef INET
case ETHERTYPE_IP: case ETHERTYPE_IP:
if (pi->ipi_csum_flags & CSUM_IP) if (pi->ipi_csum_flags & IXL_CSUM_IPV4)
*cmd |= I40E_TX_DESC_CMD_IIPT_IPV4_CSUM; *cmd |= I40E_TX_DESC_CMD_IIPT_IPV4_CSUM;
else else
*cmd |= I40E_TX_DESC_CMD_IIPT_IPV4; *cmd |= I40E_TX_DESC_CMD_IIPT_IPV4;

View File

@ -100,7 +100,7 @@ static int uaudio_default_channels = 0; /* use default */
static int uaudio_buffer_ms = 8; static int uaudio_buffer_ms = 8;
#ifdef USB_DEBUG #ifdef USB_DEBUG
static int uaudio_debug = 0; static int uaudio_debug;
static SYSCTL_NODE(_hw_usb, OID_AUTO, uaudio, CTLFLAG_RW, 0, "USB uaudio"); static SYSCTL_NODE(_hw_usb, OID_AUTO, uaudio, CTLFLAG_RW, 0, "USB uaudio");
@ -136,6 +136,8 @@ uaudio_buffer_ms_sysctl(SYSCTL_HANDLER_ARGS)
SYSCTL_PROC(_hw_usb_uaudio, OID_AUTO, buffer_ms, CTLTYPE_INT | CTLFLAG_RWTUN, SYSCTL_PROC(_hw_usb_uaudio, OID_AUTO, buffer_ms, CTLTYPE_INT | CTLFLAG_RWTUN,
0, sizeof(int), uaudio_buffer_ms_sysctl, "I", 0, sizeof(int), uaudio_buffer_ms_sysctl, "I",
"uaudio buffering delay from 2ms to 8ms"); "uaudio buffering delay from 2ms to 8ms");
#else
#define uaudio_debug 0
#endif #endif
#define UAUDIO_NFRAMES 64 /* must be factor of 8 due HS-USB */ #define UAUDIO_NFRAMES 64 /* must be factor of 8 due HS-USB */
@ -2161,6 +2163,14 @@ uaudio_chan_play_sync_callback(struct usb_xfer *xfer, usb_error_t error)
break; break;
case USB_ST_SETUP: case USB_ST_SETUP:
/*
* Check if the recording stream can be used as a
* source of jitter information to save some
* isochronous bandwidth:
*/
if (ch->priv_sc->sc_rec_chan.num_alt != 0 &&
uaudio_debug == 0)
break;
usbd_xfer_set_frames(xfer, 1); usbd_xfer_set_frames(xfer, 1);
usbd_xfer_set_frame_len(xfer, 0, usbd_xfer_max_framelen(xfer)); usbd_xfer_set_frame_len(xfer, 0, usbd_xfer_max_framelen(xfer));
usbd_transfer_submit(xfer); usbd_transfer_submit(xfer);

View File

@ -675,6 +675,8 @@ uhid_probe(device_t dev)
{ {
struct usb_attach_arg *uaa = device_get_ivars(dev); struct usb_attach_arg *uaa = device_get_ivars(dev);
int error; int error;
void *buf;
uint16_t len;
DPRINTFN(11, "\n"); DPRINTFN(11, "\n");
@ -701,6 +703,25 @@ uhid_probe(device_t dev)
!usb_test_quirk(uaa, UQ_UMS_IGNORE)))) !usb_test_quirk(uaa, UQ_UMS_IGNORE))))
return (ENXIO); return (ENXIO);
/* Check for mandatory multitouch usages to give wmt(4) a chance */
if (!usb_test_quirk(uaa, UQ_WMT_IGNORE)) {
error = usbd_req_get_hid_desc(uaa->device, NULL,
&buf, &len, M_USBDEV, uaa->info.bIfaceIndex);
/* Let HID decscriptor-less devices to be handled at attach */
if (!error) {
if (hid_locate(buf, len,
HID_USAGE2(HUP_DIGITIZERS, HUD_CONTACT_MAX),
hid_feature, 0, NULL, NULL, NULL) &&
hid_locate(buf, len,
HID_USAGE2(HUP_DIGITIZERS, HUD_CONTACTID),
hid_input, 0, NULL, NULL, NULL)) {
free(buf, M_USBDEV);
return (ENXIO);
}
free(buf, M_USBDEV);
}
}
return (BUS_PROBE_GENERIC); return (BUS_PROBE_GENERIC);
} }

View File

@ -856,6 +856,12 @@ wmt_cont_max_parse(struct wmt_softc *sc, const void *r_ptr, uint16_t r_len)
} }
} }
static const STRUCT_USB_HOST_ID wmt_devs[] = {
/* generic HID class w/o boot interface */
{USB_IFACE_CLASS(UICLASS_HID),
USB_IFACE_SUBCLASS(0),},
};
static devclass_t wmt_devclass; static devclass_t wmt_devclass;
static device_method_t wmt_methods[] = { static device_method_t wmt_methods[] = {
@ -876,3 +882,4 @@ DRIVER_MODULE(wmt, uhub, wmt_driver, wmt_devclass, NULL, 0);
MODULE_DEPEND(wmt, usb, 1, 1, 1); MODULE_DEPEND(wmt, usb, 1, 1, 1);
MODULE_DEPEND(wmt, evdev, 1, 1, 1); MODULE_DEPEND(wmt, evdev, 1, 1, 1);
MODULE_VERSION(wmt, 1); MODULE_VERSION(wmt, 1);
USB_PNP_HOST_INFO(wmt_devs);

View File

@ -396,7 +396,7 @@
compatible = "ti,wl1835"; compatible = "ti,wl1835";
reg = <2>; reg = <2>;
interrupt-parent = <&gpio3>; interrupt-parent = <&gpio3>;
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; interrupts = <7 IRQ_TYPE_EDGE_RISING>;
}; };
}; };

View File

@ -778,7 +778,7 @@
compatible = "ti,wl1835"; compatible = "ti,wl1835";
reg = <2>; reg = <2>;
interrupt-parent = <&gpio3>; interrupt-parent = <&gpio3>;
interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; interrupts = <17 IRQ_TYPE_EDGE_RISING>;
}; };
}; };

View File

@ -690,7 +690,7 @@
compatible = "ti,wl1271"; compatible = "ti,wl1271";
reg = <2>; reg = <2>;
interrupt-parent = <&gpio0>; interrupt-parent = <&gpio0>;
interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; /* gpio 31 */ interrupts = <31 IRQ_TYPE_EDGE_RISING>; /* gpio 31 */
ref-clock-frequency = <38400000>; ref-clock-frequency = <38400000>;
}; };
}; };

View File

@ -0,0 +1,457 @@
//SPDX-License-Identifier: GPL-2.0
/* Copyright (C) 2018 Octavo Systems LLC - http://www.octavosystems.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
#include "am33xx.dtsi"
#include "am335x-osd335x-common.dtsi"
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/display/tda998x.h>
/ {
model = "Octavo Systems OSD3358-SM-RED";
compatible = "oct,osd3358-sm-refdesign", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};
&ldo3_reg {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
&mmc1 {
vmmc-supply = <&vmmcsd_fixed>;
};
&mmc2 {
vmmc-supply = <&vmmcsd_fixed>;
pinctrl-names = "default";
pinctrl-0 = <&emmc_pins>;
bus-width = <8>;
status = "okay";
};
&am33xx_pinmux {
nxp_hdmi_bonelt_pins: nxp-hdmi-bonelt-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9b0, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr0 */
AM33XX_IOPAD(0x8a0, PIN_OUTPUT | MUX_MODE0) /* lcd_data0.lcd_data0 */
AM33XX_IOPAD(0x8a4, PIN_OUTPUT | MUX_MODE0) /* lcd_data1.lcd_data1 */
AM33XX_IOPAD(0x8a8, PIN_OUTPUT | MUX_MODE0) /* lcd_data2.lcd_data2 */
AM33XX_IOPAD(0x8ac, PIN_OUTPUT | MUX_MODE0) /* lcd_data3.lcd_data3 */
AM33XX_IOPAD(0x8b0, PIN_OUTPUT | MUX_MODE0) /* lcd_data4.lcd_data4 */
AM33XX_IOPAD(0x8b4, PIN_OUTPUT | MUX_MODE0) /* lcd_data5.lcd_data5 */
AM33XX_IOPAD(0x8b8, PIN_OUTPUT | MUX_MODE0) /* lcd_data6.lcd_data6 */
AM33XX_IOPAD(0x8bc, PIN_OUTPUT | MUX_MODE0) /* lcd_data7.lcd_data7 */
AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE0) /* lcd_data8.lcd_data8 */
AM33XX_IOPAD(0x8c4, PIN_OUTPUT | MUX_MODE0) /* lcd_data9.lcd_data9 */
AM33XX_IOPAD(0x8c8, PIN_OUTPUT | MUX_MODE0) /* lcd_data10.lcd_data10 */
AM33XX_IOPAD(0x8cc, PIN_OUTPUT | MUX_MODE0) /* lcd_data11.lcd_data11 */
AM33XX_IOPAD(0x8d0, PIN_OUTPUT | MUX_MODE0) /* lcd_data12.lcd_data12 */
AM33XX_IOPAD(0x8d4, PIN_OUTPUT | MUX_MODE0) /* lcd_data13.lcd_data13 */
AM33XX_IOPAD(0x8d8, PIN_OUTPUT | MUX_MODE0) /* lcd_data14.lcd_data14 */
AM33XX_IOPAD(0x8dc, PIN_OUTPUT | MUX_MODE0) /* lcd_data15.lcd_data15 */
AM33XX_IOPAD(0x8e0, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_vsync.lcd_vsync */
AM33XX_IOPAD(0x8e4, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_hsync.lcd_hsync */
AM33XX_IOPAD(0x8e8, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_pclk.lcd_pclk */
AM33XX_IOPAD(0x8ec, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_ac_bias_en.lcd_ac_bias_en */
>;
};
nxp_hdmi_bonelt_off_pins: nxp-hdmi-bonelt-off-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9b0, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr0 */
>;
};
mcasp0_pins: mcasp0-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9ac, PIN_INPUT_PULLUP | MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
AM33XX_IOPAD(0x99c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
AM33XX_IOPAD(0x994, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx */
AM33XX_IOPAD(0x990, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */
AM33XX_IOPAD(0x86c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_a11.GPIO1_27 */
>;
};
flash_enable: flash-enable {
pinctrl-single,pins = <
AM33XX_IOPAD(0x944, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* rmii1_ref_clk.gpio0_29 */
>;
};
imu_interrupt: imu-interrupt {
pinctrl-single,pins = <
AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rx_er.gpio3_2 */
>;
};
ethernet_interrupt: ethernet-interrupt{
pinctrl-single,pins = <
AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_col.gpio3_0 */
>;
};
};
&lcdc {
status = "okay";
/* If you want to get 24 bit RGB and 16 BGR mode instead of
* current 16 bit RGB and 24 BGR modes, set the propety
* below to "crossed" and uncomment the video-ports -property
* in tda19988 node.
* AM335x errata for wiring:
* http://www.ti.com/lit/er/sprz360i/sprz360i.pdf
*/
blue-and-red-wiring = "straight";
port {
lcdc_0: endpoint {
remote-endpoint = <&hdmi_0>;
};
};
};
&i2c0 {
tda19988: hdmi-encoder@70 {
compatible = "nxp,tda998x";
reg = <0x70>;
pinctrl-names = "default", "off";
pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
/* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
/* video-ports = <0x234501>; */
#sound-dai-cells = <0>;
audio-ports = < TDA998x_I2S 0x03>;
port {
hdmi_0: endpoint {
remote-endpoint = <&lcdc_0>;
};
};
};
mpu9250: imu@68 {
compatible = "invensense,mpu6050";
reg = <0x68>;
interrupt-parent = <&gpio3>;
interrupts = <21 IRQ_TYPE_EDGE_RISING>;
i2c-gate {
#address-cells = <1>;
#size-cells = <0>;
ax8975@c {
compatible = "ak,ak8975";
reg = <0x0c>;
};
};
/*invensense,int_config = <0x10>;
invensense,level_shifter = <0>;
invensense,orientation = [01 00 00 00 01 00 00 00 01];
invensense,sec_slave_type = <0>;
invensense,key = [4e cc 7e eb f6 1e 35 22 00 34 0d 65 32 e9 94 89];*/
};
bmp280: pressure@78 {
compatible = "bosch,bmp280";
reg = <0x76>;
};
};
&rtc {
system-power-controller;
};
&mcasp0 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp0_pins>;
status = "okay";
op-mode = <0>; /* MCASP_IIS_MODE */
tdm-slots = <2>;
serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
0 0 1 0
>;
tx-num-evt = <32>;
rx-num-evt = <32>;
};
/ {
clk_mcasp0_fixed: clk-mcasp0-fixed {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24576000>;
};
clk_mcasp0: clk-mcasp0 {
#clock-cells = <0>;
compatible = "gpio-gate-clock";
clocks = <&clk_mcasp0_fixed>;
enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
};
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "TI BeagleBone Black";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
dailink0_master: simple-audio-card,cpu {
sound-dai = <&mcasp0>;
clocks = <&clk_mcasp0>;
};
simple-audio-card,codec {
sound-dai = <&tda19988>;
};
};
chosen {
stdout-path = &uart0;
};
leds {
pinctrl-names = "default";
pinctrl-0 = <&user_leds_s0>;
compatible = "gpio-leds";
led2 {
label = "beaglebone:green:usr0";
gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
led3 {
label = "beaglebone:green:usr1";
gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "mmc0";
default-state = "off";
};
led4 {
label = "beaglebone:green:usr2";
gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "cpu0";
default-state = "off";
};
led5 {
label = "beaglebone:green:usr3";
gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "mmc1";
default-state = "off";
};
};
vmmcsd_fixed: fixedregulator0 {
compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
&am33xx_pinmux {
pinctrl-names = "default";
pinctrl-0 = <&clkout2_pin>;
user_leds_s0: user-leds-s0 {
pinctrl-single,pins = <
AM33XX_IOPAD(0x854, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_a5.gpio1_21 */
AM33XX_IOPAD(0x858, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_a6.gpio1_22 */
AM33XX_IOPAD(0x85c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_a7.gpio1_23 */
AM33XX_IOPAD(0x860, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_a8.gpio1_24 */
>;
};
i2c2_pins: pinmux-i2c2-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x978, PIN_INPUT_PULLUP | MUX_MODE3) /* uart1_ctsn.i2c2_sda */
AM33XX_IOPAD(0x97c, PIN_INPUT_PULLUP | MUX_MODE3) /* uart1_rtsn.i2c2_scl */
>;
};
uart0_pins: pinmux-uart0-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};
clkout2_pin: pinmux-clkout2-pin {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9b4, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
>;
};
cpsw_default: cpsw-default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */
AM33XX_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_txd3 */
AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_txd2 */
AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_txd1 */
AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_txd0 */
AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_txclk */
AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxclk.rgmii1_rxclk */
AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd3.rgmii1_rxd3 */
AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd2.rgmii1_rxd2 */
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rxd1 */
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rxd0 */
>;
};
cpsw_sleep: cpsw-sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x91c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x920, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x92c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
davinci_mdio_default: davinci-mdio-default {
pinctrl-single,pins = <
/* MDIO */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
>;
};
davinci_mdio_sleep: davinci-mdio-sleep {
pinctrl-single,pins = <
/* MDIO reset value */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
mmc1_pins: pinmux-mmc1-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* (C15) spi0_cs1.gpio0[6] */
AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0) /* (G16) mmc0_dat0.mmc0_dat0 */
AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0) /* (G15) mmc0_dat1.mmc0_dat1 */
AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0) /* (F18) mmc0_dat2.mmc0_dat2 */
AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0) /* (F17) mmc0_dat3.mmc0_dat3 */
AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* (G18) mmc0_cmd.mmc0_cmd */
AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0) /* (G17) mmc0_clk.mmc0_clk */
>;
};
emmc_pins: pinmux-emmc-pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x880, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
AM33XX_IOPAD(0x884, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
AM33XX_IOPAD(0x800, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
AM33XX_IOPAD(0x804, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
AM33XX_IOPAD(0x808, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
AM33XX_IOPAD(0x80c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
AM33XX_IOPAD(0x810, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
AM33XX_IOPAD(0x814, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
AM33XX_IOPAD(0x818, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
AM33XX_IOPAD(0x81c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
>;
};
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;
status = "okay";
};
&usb {
status = "okay";
};
&usb_ctrl_mod {
status = "okay";
};
&usb0_phy {
status = "okay";
};
&usb1_phy {
status = "okay";
};
&usb0 {
status = "okay";
dr_mode = "peripheral";
interrupts-extended = <&intc 18 &tps 0>;
interrupt-names = "mc", "vbus";
};
&usb1 {
status = "okay";
dr_mode = "host";
};
&cppi41dma {
status = "okay";
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_pins>;
status = "okay";
clock-frequency = <100000>;
};
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <4>;
phy-mode = "rgmii-txid";
};
&mac {
slaves = <1>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
};
&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};
&mmc1 {
status = "okay";
bus-width = <0x4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
};
&rtc {
clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
clock-names = "ext-clk", "int-clk";
};

View File

@ -0,0 +1,136 @@
/*
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
#include "am33xx.dtsi"
#include "am335x-bone-common.dtsi"
#include "am335x-boneblack-common.dtsi"
#include <dt-bindings/interrupt-controller/irq.h>
/ {
model = "SanCloud BeagleBone Enhanced";
compatible = "sancloud,am335x-boneenhanced", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};
&am33xx_pinmux {
pinctrl-names = "default";
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */
AM33XX_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxclk.rgmii1_rclk */
AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd3.rgmii1_rd3 */
AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd2.rgmii1_rd2 */
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */
>;
};
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x91c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x920, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x92c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* MDIO */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
>;
};
davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
usb_hub_ctrl: usb_hub_ctrl {
pinctrl-single,pins = <
AM33XX_IOPAD(0x944, PIN_OUTPUT_PULLUP | MUX_MODE7) /* rmii1_refclk.gpio0_29 */
>;
};
mpu6050_pins: pinmux_mpu6050_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x968, PIN_INPUT | MUX_MODE7) /* uart0_ctsn.gpio1_8 */
>;
};
lps3331ap_pins: pinmux_lps3331ap_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x868, PIN_INPUT | MUX_MODE7) /* gpmc_a10.gpio1_26 */
>;
};
};
&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
};
&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>;
phy-mode = "rgmii-txid";
};
&i2c0 {
lps331ap: barometer@5c {
compatible = "st,lps331ap-press";
st,drdy-int-pin = <1>;
reg = <0x5c>;
interrupt-parent = <&gpio1>;
interrupts = <26 IRQ_TYPE_EDGE_RISING>;
};
mpu6050: accelerometer@68 {
compatible = "invensense,mpu6050";
reg = <0x68>;
interrupt-parent = <&gpio0>;
interrupts = <2 IRQ_TYPE_EDGE_RISING>;
orientation = <0xff 0 0 0 1 0 0 0 0xff>;
};
usb2512b: usb-hub@2c {
compatible = "microchip,usb2512b";
reg = <0x2c>;
reset-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
/* wifi on port 4 */
};
};

View File

@ -8,6 +8,8 @@
/dts-v1/; /dts-v1/;
#include "am33xx.dtsi" #include "am33xx.dtsi"
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ { / {
model = "Toby Churchill SL50 Series"; model = "Toby Churchill SL50 Series";
@ -34,25 +36,25 @@
pinctrl-0 = <&led_pins>; pinctrl-0 = <&led_pins>;
led0 { led0 {
label = "sl50:green:usr0"; label = "sl50:red:usr0";
gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
default-state = "off"; default-state = "off";
}; };
led1 { led1 {
label = "sl50:red:usr1"; label = "sl50:green:usr1";
gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
default-state = "off"; default-state = "off";
}; };
led2 { led2 {
label = "sl50:green:usr2"; label = "sl50:red:usr2";
gpios = <&gpio1 23 GPIO_ACTIVE_LOW>; gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
default-state = "off"; default-state = "off";
}; };
led3 { led3 {
label = "sl50:red:usr3"; label = "sl50:green:usr3";
gpios = <&gpio1 24 GPIO_ACTIVE_LOW>; gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
default-state = "off"; default-state = "off";
}; };
@ -60,16 +62,44 @@
backlight0: disp0 { backlight0: disp0 {
compatible = "pwm-backlight"; compatible = "pwm-backlight";
pwms = <&ehrpwm1 0 500000 0>; pinctrl-names = "default";
brightness-levels = <0 10 20 30 40 50 60 70 80 90 99>; pinctrl-0 = <&backlight0_pins>;
default-brightness-level = <6>; pwms = <&ehrpwm1 0 500000 PWM_POLARITY_INVERTED>;
brightness-levels = < 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
100>;
default-brightness-level = <50>;
enable-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
power-supply = <&vdd_sys_reg>;
}; };
backlight1: disp1 { backlight1: disp1 {
compatible = "pwm-backlight"; compatible = "pwm-backlight";
pwms = <&ehrpwm1 1 500000 0>; pinctrl-names = "default";
brightness-levels = <0 10 20 30 40 50 60 70 80 90 99>; pinctrl-0 = <&backlight1_pins>;
default-brightness-level = <6>; pwms = <&ehrpwm1 1 500000 PWM_POLARITY_INVERTED>;
brightness-levels = < 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
100>;
default-brightness-level = <50>;
enable-gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
power-supply = <&vdd_sys_reg>;
}; };
clocks { clocks {
@ -78,27 +108,85 @@
#size-cells = <0>; #size-cells = <0>;
/* audio external oscillator */ /* audio external oscillator */
tlv320aic3x_mclk: oscillator@0 { audio_mclk_fixed: oscillator@0 {
compatible = "fixed-clock"; compatible = "fixed-clock";
#clock-cells = <0>; #clock-cells = <0>;
clock-frequency = <24576000>; /* 24.576MHz */ clock-frequency = <24576000>; /* 24.576MHz */
}; };
audio_mclk: audio_mclk_gate@0 {
compatible = "gpio-gate-clock";
#clock-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&audio_mclk_pins>;
clocks = <&audio_mclk_fixed>;
enable-gpios = <&gpio1 27 0>;
};
};
panel: lcd_panel {
compatible = "ti,tilcdc,panel";
pinctrl-names = "default";
pinctrl-0 = <&lcd_pins>;
panel-info {
ac-bias = <255>;
ac-bias-intrpt = <0>;
dma-burst-sz = <16>;
bpp = <16>;
fdd = <0x80>;
tft-alt-mode = <0>;
mono-8bit-mode = <0>;
sync-edge = <0>;
sync-ctrl = <1>;
raster-order = <0>;
fifo-th = <0>;
};
display-timings {
native-mode = <&timing0>;
timing0: 960x128 {
clock-frequency = <18000000>;
hactive = <960>;
vactive = <272>;
hback-porch = <40>;
hfront-porch = <16>;
hsync-len = <24>;
hsync-active = <0>;
vback-porch = <3>;
vfront-porch = <8>;
vsync-len = <4>;
vsync-active = <0>;
};
};
}; };
sound { sound {
compatible = "ti,da830-evm-audio"; compatible = "audio-graph-card";
ti,model = "AM335x-SL50"; label = "sound-card";
ti,audio-codec = <&audio_codec>; pinctrl-names = "default";
ti,mcasp-controller = <&mcasp0>; pinctrl-0 = <&audio_pa_pins>;
clocks = <&tlv320aic3x_mclk>; widgets = "Headphone", "Headphone Jack",
clock-names = "mclk"; "Speaker", "Speaker External",
"Line", "Line In",
"Microphone", "Microphone Jack";
ti,audio-routing = routing = "Headphone Jack", "HPLOUT",
"Headphone Jack", "HPLOUT", "Headphone Jack", "HPROUT",
"Headphone Jack", "HPROUT", "Amplifier", "MONO_LOUT",
"LINE1R", "Line In", "Speaker External", "Amplifier",
"LINE1L", "Line In"; "LINE1R", "Line In",
"LINE1L", "Line In",
"MIC3L", "Microphone Jack",
"MIC3R", "Microphone Jack",
"Microphone Jack", "Mic Bias";
dais = <&cpu_port>;
pa-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
}; };
emmc_pwrseq: pwrseq@0 { emmc_pwrseq: pwrseq@0 {
@ -108,6 +196,14 @@
reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
}; };
vdd_sys_reg: regulator@0 {
compatible = "regulator-fixed";
regulator-name = "vdd_sys_reg";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
};
vmmcsd_fixed: fixedregulator0 { vmmcsd_fixed: fixedregulator0 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed"; regulator-name = "vmmcsd_fixed";
@ -120,6 +216,65 @@
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&lwb_pins>; pinctrl-0 = <&lwb_pins>;
audio_pins: pinmux_audio_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9ac, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
AM33XX_IOPAD(0x994, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx */
AM33XX_IOPAD(0x990, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */
AM33XX_IOPAD(0x998, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr0.mcasp0_axr0 */
AM33XX_IOPAD(0x99c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2 */
>;
};
audio_pa_pins: pinmux_audio_pa_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9a0, PIN_INPUT_PULLDOWN | MUX_MODE7) /* SoundPA_en - mcasp0_aclkr.gpio3_18 */
>;
};
audio_mclk_pins: pinmux_audio_mclk_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x86c, PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_a11.gpio1_27 */
>;
};
backlight0_pins: pinmux_backlight0_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x898, PIN_OUTPUT | MUX_MODE7) /* gpmc_wen.gpio2_4 */
>;
};
backlight1_pins: pinmux_backlight1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x828, PIN_OUTPUT | MUX_MODE7) /* gpmc_ad10.gpio0_26 */
>;
};
lcd_pins: pinmux_lcd_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x8a0, PIN_OUTPUT | MUX_MODE0) /* lcd_data0.lcd_data0 */
AM33XX_IOPAD(0x8a4, PIN_OUTPUT | MUX_MODE0) /* lcd_data1.lcd_data1 */
AM33XX_IOPAD(0x8a8, PIN_OUTPUT | MUX_MODE0) /* lcd_data2.lcd_data2 */
AM33XX_IOPAD(0x8ac, PIN_OUTPUT | MUX_MODE0) /* lcd_data3.lcd_data3 */
AM33XX_IOPAD(0x8b0, PIN_OUTPUT | MUX_MODE0) /* lcd_data4.lcd_data4 */
AM33XX_IOPAD(0x8b4, PIN_OUTPUT | MUX_MODE0) /* lcd_data5.lcd_data5 */
AM33XX_IOPAD(0x8b8, PIN_OUTPUT | MUX_MODE0) /* lcd_data6.lcd_data6 */
AM33XX_IOPAD(0x8bc, PIN_OUTPUT | MUX_MODE0) /* lcd_data7.lcd_data7 */
AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE0) /* lcd_data8.lcd_data8 */
AM33XX_IOPAD(0x8c4, PIN_OUTPUT | MUX_MODE0) /* lcd_data9.lcd_data9 */
AM33XX_IOPAD(0x8c8, PIN_OUTPUT | MUX_MODE0) /* lcd_data10.lcd_data10 */
AM33XX_IOPAD(0x8cc, PIN_OUTPUT | MUX_MODE0) /* lcd_data11.lcd_data11 */
AM33XX_IOPAD(0x8d0, PIN_OUTPUT | MUX_MODE0) /* lcd_data12.lcd_data12 */
AM33XX_IOPAD(0x8d4, PIN_OUTPUT | MUX_MODE0) /* lcd_data13.lcd_data13 */
AM33XX_IOPAD(0x8d8, PIN_OUTPUT | MUX_MODE0) /* lcd_data14.lcd_data14 */
AM33XX_IOPAD(0x8dc, PIN_OUTPUT | MUX_MODE0) /* lcd_data15.lcd_data15 */
AM33XX_IOPAD(0x8e0, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_vsync.lcd_vsync */
AM33XX_IOPAD(0x8e4, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_hsync.lcd_hsync */
AM33XX_IOPAD(0x8e8, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_pclk.lcd_pclk */
AM33XX_IOPAD(0x8ec, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* lcd_ac_bias_en.lcd_ac_bias_en */
>;
};
led_pins: pinmux_led_pins { led_pins: pinmux_led_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
AM33XX_IOPAD(0x854, PIN_OUTPUT | MUX_MODE7) /* gpmc_a5.gpio1_21 */ AM33XX_IOPAD(0x854, PIN_OUTPUT | MUX_MODE7) /* gpmc_a5.gpio1_21 */
@ -207,6 +362,8 @@
/* MDIO */ /* MDIO */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
/* Ethernet */
AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE7) /* Ethernet_nRST - gpmc_ad14.gpio1_14 */
>; >;
}; };
@ -245,16 +402,6 @@
>; >;
}; };
audio_pins: pinmux_audio_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x9ac, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
AM33XX_IOPAD(0x994, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx */
AM33XX_IOPAD(0x990, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */
AM33XX_IOPAD(0x998, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr0.mcasp0_axr0 */
AM33XX_IOPAD(0x99c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2 */
>;
};
ehrpwm1_pins: pinmux_ehrpwm1a_pins { ehrpwm1_pins: pinmux_ehrpwm1a_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
AM33XX_IOPAD(0x848, PIN_OUTPUT | MUX_MODE6) /* gpmc_a2.ehrpwm1a */ AM33XX_IOPAD(0x848, PIN_OUTPUT | MUX_MODE6) /* gpmc_a2.ehrpwm1a */
@ -262,6 +409,12 @@
>; >;
}; };
rtc0_irq_pins: pinmux_rtc0_irq_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x824, PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_ad9.gpio0_23 */
>;
};
spi0_pins: pinmux_spi0_pins { spi0_pins: pinmux_spi0_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0) /* SPI0_MOSI - spi0_d0.spi0_d0 */ AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0) /* SPI0_MOSI - spi0_d0.spi0_d0 */
@ -274,15 +427,18 @@
lwb_pins: pinmux_lwb_pins { lwb_pins: pinmux_lwb_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
AM33XX_IOPAD(0x9a4, PIN_OUTPUT | MUX_MODE7) /* SoundPA_en - mcasp0_fsr.gpio3_19 */
AM33XX_IOPAD(0x828, PIN_OUTPUT | MUX_MODE7) /* nKbdOnC - gpmc_ad10.gpio0_26 */
AM33XX_IOPAD(0x830, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdInt - gpmc_ad12.gpio1_12 */ AM33XX_IOPAD(0x830, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdInt - gpmc_ad12.gpio1_12 */
AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdReset - gpmc_ad13.gpio1_13 */ AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdReset - gpmc_ad13.gpio1_13 */
AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE7) /* nDispReset - gpmc_ad14.gpio1_14 */
AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7) /* USB1_enPower - gpmc_a1.gpio1_17 */ AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7) /* USB1_enPower - gpmc_a1.gpio1_17 */
/* PDI Bus - Battery system */ /* PDI Bus - Battery system */
AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* nBattReset gpmc_a0.gpio1_16 */ AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* nBattReset gpmc_a0.gpio1_16 */
AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE7) /* BattPDIData gpmc_ad15.gpio1_15 */ AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE7) /* BattPDIData gpmc_ad15.gpio1_15 */
/* FPGA */
AM33XX_IOPAD(0x820, PIN_INPUT_PULLUP | MUX_MODE7) /* FPGA_DONE - gpmc_ad8.gpio0_22 */
AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* FPGA_NRST - gpmc_a0.gpio1_16 */
AM33XX_IOPAD(0x844, PIN_INPUT_PULLDOWN | MUX_MODE7) /* FPGA_RUN - gpmc_a1.gpio1_17 */
AM33XX_IOPAD(0x864, PIN_INPUT_PULLUP | MUX_MODE7) /* ENFPGA - gpmc_a9.gpio1_25 */
AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE7) /* FPGA_PROGRAM - gpmc_a10.gpio1_26 */
>; >;
}; };
}; };
@ -298,9 +454,14 @@
reg = <0x24>; reg = <0x24>;
}; };
bq32000: rtc@68 { rtc0: rtc@68 {
compatible = "ti,bq32000"; compatible = "dallas,ds1339";
trickle-resistor-ohms = <1120>; pinctrl-names = "default";
pinctrl-0 = <&rtc0_irq_pins>;
interrupt-parent = <&gpio0>;
interrupts = <23 IRQ_TYPE_EDGE_FALLING>; /* gpio 23 */
wakeup-source;
trickle-resistor-ohms = <2000>;
reg = <0x68>; reg = <0x68>;
}; };
@ -326,12 +487,21 @@
audio_codec: tlv320aic3106@1b { audio_codec: tlv320aic3106@1b {
status = "okay"; status = "okay";
compatible = "ti,tlv320aic3106"; compatible = "ti,tlv320aic3106";
#sound-dai-cells = <0>;
reg = <0x1b>; reg = <0x1b>;
ai3x-micbias-vg = <2>; /* 2.5V */
AVDD-supply = <&ldo4_reg>; AVDD-supply = <&ldo4_reg>;
IOVDD-supply = <&ldo4_reg>; IOVDD-supply = <&ldo4_reg>;
DRVDD-supply = <&ldo4_reg>; DRVDD-supply = <&ldo4_reg>;
DVDD-supply = <&ldo3_reg>; DVDD-supply = <&ldo3_reg>;
codec_port: port {
codec_endpoint: endpoint {
remote-endpoint = <&cpu_endpoint>;
clocks = <&audio_mclk>;
};
};
}; };
/* Ambient Light Sensor */ /* Ambient Light Sensor */
@ -363,7 +533,7 @@
&usb0 { &usb0 {
status = "okay"; status = "okay";
dr_mode = "peripheral"; dr_mode = "otg";
}; };
&usb1 { &usb1 {
@ -397,17 +567,27 @@
status = "okay"; status = "okay";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&audio_pins>; pinctrl-0 = <&audio_pins>;
#sound-dai-cells = <0>;
op-mode = <0>; /* MCASP_ISS_MODE */ op-mode = <0>; /* MCASP_ISS_MODE */
tdm-slots = <2>; tdm-slots = <2>;
serial-dir = < /* 4 serializers */
2 0 1 0 serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
0 0 0 0 0 0 1 2
0 0 0 0
0 0 0 0
>; >;
tx-num-evt = <1>; tx-num-evt = <32>;
rx-num-evt = <1>; rx-num-evt = <32>;
cpu_port: port {
cpu_endpoint: endpoint {
remote-endpoint = <&codec_endpoint>;
dai-format = "dsp_b";
bitclock-master = <&codec_port>;
frame-master = <&codec_port>;
bitclock-inversion;
clocks = <&audio_mclk>;
};
};
}; };
&uart0 { &uart0 {
@ -507,13 +687,8 @@
}; };
&cpsw_emac0 { &cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>;
phy-mode = "mii";
};
&cpsw_emac1 {
phy_id = <&davinci_mdio>, <1>;
phy-mode = "mii"; phy-mode = "mii";
phy-handle = <&ethphy0>;
}; };
&mac { &mac {
@ -528,6 +703,12 @@
pinctrl-names = "default", "sleep"; pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>; pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>; pinctrl-1 = <&davinci_mdio_sleep>;
reset-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
reset-delay-us = <100>; /* PHY datasheet states 100us min */
ethphy0: ethernet-phy@0 {
reg = <0>;
};
}; };
&sham { &sham {
@ -547,3 +728,15 @@
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&ehrpwm1_pins>; pinctrl-0 = <&ehrpwm1_pins>;
}; };
&lcdc {
status = "okay";
};
&tscadc {
status = "okay";
};
&am335x_adc {
ti,adc-channels = <0 1 2 3 4 5 6 7>;
};

View File

@ -29,8 +29,8 @@
serial3 = &uart3; serial3 = &uart3;
serial4 = &uart4; serial4 = &uart4;
serial5 = &uart5; serial5 = &uart5;
d_can0 = &dcan0; d-can0 = &dcan0;
d_can1 = &dcan1; d-can1 = &dcan1;
usb0 = &usb0; usb0 = &usb0;
usb1 = &usb1; usb1 = &usb1;
phy0 = &usb0_phy; phy0 = &usb0_phy;

View File

@ -127,6 +127,7 @@
status = "okay"; status = "okay";
pinctrl-names = "default"; pinctrl-names = "default";
enable-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>; /* gpio176, lcd INI */ enable-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>; /* gpio176, lcd INI */
vcc-supply = <&vdd_io_reg>;
port { port {
lcd_in: endpoint { lcd_in: endpoint {
@ -154,6 +155,7 @@
bl: backlight { bl: backlight {
compatible = "pwm-backlight"; compatible = "pwm-backlight";
pinctrl-names = "default"; pinctrl-names = "default";
power-supply = <&vdd_io_reg>;
pinctrl-0 = <&backlight_pins>; pinctrl-0 = <&backlight_pins>;
pwms = <&pwm11 0 5000000 0>; pwms = <&pwm11 0 5000000 0>;
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
@ -168,6 +170,13 @@
ti,timers = <&timer11>; ti,timers = <&timer11>;
#pwm-cells = <3>; #pwm-cells = <3>;
}; };
/* HS USB Host PHY on PORT 1 */
hsusb1_phy: hsusb1_phy {
compatible = "usb-nop-xceiv";
reset-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; /* gpio_57 */
#phy-cells = <0>;
};
}; };
&davinci_emac { &davinci_emac {
@ -203,6 +212,7 @@
reg = <0x21>; reg = <0x21>;
gpio-controller; gpio-controller;
#gpio-cells = <2>; #gpio-cells = <2>;
vcc-supply = <&vdd_io_reg>;
}; };
}; };
@ -220,15 +230,21 @@
cd-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; /* gpio_127 */ cd-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; /* gpio_127 */
}; };
&mmc2 {
status = "disabled";
};
&mmc3 { &mmc3 {
status = "disabled"; status = "disabled";
}; };
&usbhshost {
port1-mode = "ehci-phy";
};
&usbhsehci {
phys = <&hsusb1_phy>;
};
&omap3_pmx_core { &omap3_pmx_core {
pinctrl-names = "default";
pinctrl-0 = <&hsusb1_rst_pins>;
leds_pins: pinmux_leds_pins { leds_pins: pinmux_leds_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
@ -287,4 +303,32 @@
OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0) /* dss_data15.dss_data15 */ OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0) /* dss_data15.dss_data15 */
>; >;
}; };
hsusb1_rst_pins: pinmux_hsusb1_rst_pins {
pinctrl-single,pins = <
OMAP3_CORE1_IOPAD(0x20ba, PIN_OUTPUT | MUX_MODE4) /* gpmc_ncs6.gpio_57 */
>;
};
};
&omap3_pmx_core2 {
pinctrl-names = "default";
pinctrl-0 = <&hsusb1_pins>;
hsusb1_pins: pinmux_hsusb1_pins {
pinctrl-single,pins = <
OMAP3430_CORE2_IOPAD(0x25d8, PIN_OUTPUT | MUX_MODE3) /* etk_clk.hsusb1_stp */
OMAP3430_CORE2_IOPAD(0x25da, PIN_OUTPUT | MUX_MODE3) /* etk_ctl.hsusb1_clk */
OMAP3430_CORE2_IOPAD(0x25ec, PIN_INPUT | MUX_MODE3) /* etk_d8.hsusb1_dir */
OMAP3430_CORE2_IOPAD(0x25ee, PIN_INPUT | MUX_MODE3) /* etk_d9.hsusb1_nxt */
OMAP3430_CORE2_IOPAD(0x25dc, PIN_INPUT | MUX_MODE3) /* etk_d0.hsusb1_data0 */
OMAP3430_CORE2_IOPAD(0x25de, PIN_INPUT | MUX_MODE3) /* etk_d1.hsusb1_data1 */
OMAP3430_CORE2_IOPAD(0x25e0, PIN_INPUT | MUX_MODE3) /* etk_d2.hsusb1_data2 */
OMAP3430_CORE2_IOPAD(0x25ea, PIN_INPUT | MUX_MODE3) /* etk_d7.hsusb1_data3 */
OMAP3430_CORE2_IOPAD(0x25e4, PIN_INPUT | MUX_MODE3) /* etk_d4.hsusb1_data4 */
OMAP3430_CORE2_IOPAD(0x25e6, PIN_INPUT | MUX_MODE3) /* etk_d5.hsusb1_data5 */
OMAP3430_CORE2_IOPAD(0x25e8, PIN_INPUT | MUX_MODE3) /* etk_d6.hsusb1_data6 */
OMAP3430_CORE2_IOPAD(0x25e2, PIN_INPUT | MUX_MODE3) /* etk_d3.hsusb1_data7 */
>;
};
}; };

Some files were not shown because too many files have changed in this diff Show More