IFC @ r238370

This commit is contained in:
Peter Grehan 2012-07-11 19:54:21 +00:00
commit b652778e42
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/bhyve/; revision=238375
5645 changed files with 507798 additions and 184763 deletions

View File

@ -92,7 +92,7 @@ TGTS= all all-man buildenv buildenvvars buildkernel buildworld \
delete-old delete-old-dirs delete-old-files delete-old-libs \ delete-old delete-old-dirs delete-old-files delete-old-libs \
depend distribute distributekernel distributekernel.debug \ depend distribute distributekernel distributekernel.debug \
distributeworld distrib-dirs distribution doxygen \ distributeworld distrib-dirs distribution doxygen \
everything hierarchy install installcheck installkernel \ everything hier hierarchy install installcheck installkernel \
installkernel.debug packagekernel packageworld \ installkernel.debug packagekernel packageworld \
reinstallkernel reinstallkernel.debug \ reinstallkernel reinstallkernel.debug \
installworld kernel-toolchain libraries lint maninstall \ installworld kernel-toolchain libraries lint maninstall \

View File

@ -15,6 +15,7 @@
# -DNO_WWWUPDATE do not update www in ${MAKE} update # -DNO_WWWUPDATE do not update www in ${MAKE} update
# -DNO_CTF do not run the DTrace CTF conversion tools on built objects # -DNO_CTF do not run the DTrace CTF conversion tools on built objects
# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
# LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target
# LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools # LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools
# list # list
# TARGET="machine" to crossbuild world for a different machine type # TARGET="machine" to crossbuild world for a different machine type
@ -88,7 +89,7 @@ SUBDIR+=etc
# These are last, since it is nice to at least get the base system # These are last, since it is nice to at least get the base system
# rebuilt before you do them. # rebuilt before you do them.
.for _DIR in ${LOCAL_DIRS} .for _DIR in ${LOCAL_LIB_DIRS} ${LOCAL_DIRS}
.if exists(${.CURDIR}/${_DIR}/Makefile) .if exists(${.CURDIR}/${_DIR}/Makefile)
SUBDIR+= ${_DIR} SUBDIR+= ${_DIR}
.endif .endif
@ -223,9 +224,6 @@ CROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \
MACHINE_ARCH=${TARGET_ARCH} \ MACHINE_ARCH=${TARGET_ARCH} \
MACHINE=${TARGET} \ MACHINE=${TARGET} \
CPUTYPE=${TARGET_CPUTYPE} CPUTYPE=${TARGET_CPUTYPE}
.if ${OSRELDATE} < 700044
CROSSENV+= AR=gnu-ar RANLIB=gnu-ranlib
.endif
.if ${MK_GROFF} != "no" .if ${MK_GROFF} != "no"
CROSSENV+= GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ CROSSENV+= GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \
GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \
@ -245,7 +243,7 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \
SSP_CFLAGS= \ SSP_CFLAGS= \
-DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \ -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
-DNO_PIC -DNO_PROFILE -DNO_SHARED \ -DNO_PIC -DNO_PROFILE -DNO_SHARED \
-DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD
# build-tools stage # build-tools stage
TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \
@ -255,7 +253,7 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \
BOOTSTRAPPING=${OSRELDATE} \ BOOTSTRAPPING=${OSRELDATE} \
SSP_CFLAGS= \ SSP_CFLAGS= \
-DNO_LINT \ -DNO_LINT \
-DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD
# cross-tools stage # cross-tools stage
XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
@ -265,6 +263,7 @@ XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
# world stage # world stage
WMAKEENV= ${CROSSENV} \ WMAKEENV= ${CROSSENV} \
_SHLIBDIRPREFIX=${WORLDTMP} \ _SHLIBDIRPREFIX=${WORLDTMP} \
_LDSCRIPTROOT= \
VERSION="${VERSION}" \ VERSION="${VERSION}" \
INSTALL="sh ${.CURDIR}/tools/install.sh" \ INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${TMPPATH} PATH=${TMPPATH}
@ -307,6 +306,7 @@ LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMPAT_32BIT \
# Yes, the flags are redundant. # Yes, the flags are redundant.
LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \
_SHLIBDIRPREFIX=${LIB32TMP} \ _SHLIBDIRPREFIX=${LIB32TMP} \
_LDSCRIPTROOT=${LIB32TMP} \
VERSION="${VERSION}" \ VERSION="${VERSION}" \
INSTALL="sh ${.CURDIR}/tools/install.sh" \ INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${TMPPATH} \ PATH=${TMPPATH} \
@ -319,11 +319,11 @@ LIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} -DNO_CPU_CFLAGS -DCOMPAT_32BIT \
-DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_INFO \ -DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_INFO \
-DWITHOUT_HTML -DNO_CTF -DNO_LINT -ECC -ECXX -EAS -ELD \ -DWITHOUT_HTML -DNO_CTF -DNO_LINT -ECC -ECXX -EAS -ELD \
DESTDIR=${LIB32TMP} DESTDIR=${LIB32TMP}
LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*} -DNO_INCS LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} -DNO_INCS
.endif .endif
# install stage # install stage
IMAKEENV= ${CROSSENV} IMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*}
IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1
.if empty(.MAKEFLAGS:M-n) .if empty(.MAKEFLAGS:M-n)
IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \ IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \
@ -488,7 +488,8 @@ build32:
.for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic .for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic
cd ${.CURDIR}/${_dir}; \ cd ${.CURDIR}/${_dir}; \
MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} SSP_CFLAGS= DESTDIR= \ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} SSP_CFLAGS= DESTDIR= \
DIRPRFX=${_dir}/ build-tools DIRPRFX=${_dir}/ -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF \
-DEARLY_BUILD build-tools
.endfor .endfor
cd ${.CURDIR}; \ cd ${.CURDIR}; \
${LIB32WMAKE} -f Makefile.inc1 libraries ${LIB32WMAKE} -f Makefile.inc1 libraries
@ -830,7 +831,7 @@ buildkernel:
cd ${KRNLOBJDIR}/${_kernel}; \ cd ${KRNLOBJDIR}/${_kernel}; \
PATH=${BPATH}:${PATH} \ PATH=${BPATH}:${PATH} \
MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \
${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF \ ${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF -DEARLY_BUILD \
-f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile
# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. # XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case.
.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) .if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules)
@ -838,7 +839,7 @@ buildkernel:
cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \
PATH=${BPATH}:${PATH} \ PATH=${BPATH}:${PATH} \
MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \
${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF ${target} ${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF -DEARLY_BUILD ${target}
.endfor .endfor
.endif .endif
.if !defined(NO_KERNELDEPEND) .if !defined(NO_KERNELDEPEND)
@ -979,8 +980,8 @@ update:
# legacy: Build compatibility shims for the next three targets # legacy: Build compatibility shims for the next three targets
# #
legacy: legacy:
.if ${BOOTSTRAPPING} < 600034 && ${BOOTSTRAPPING} != 0 .if ${BOOTSTRAPPING} < 700055 && ${BOOTSTRAPPING} != 0
@echo "ERROR: Source upgrades from versions prior to 6.0 not supported."; \ @echo "ERROR: Source upgrades from versions prior to 7.0 not supported."; \
false false
.endif .endif
.for _tool in tools/build .for _tool in tools/build
@ -1008,7 +1009,7 @@ _gperf= gnu/usr.bin/gperf
_groff= gnu/usr.bin/groff _groff= gnu/usr.bin/groff
.endif .endif
.if ${BOOTSTRAPPING} >= 700044 && ${BOOTSTRAPPING} < 800022 .if ${BOOTSTRAPPING} < 800022
_ar= usr.bin/ar _ar= usr.bin/ar
.endif .endif
@ -1022,6 +1023,9 @@ _sed= usr.bin/sed
.if ${BOOTSTRAPPING} < 900006 .if ${BOOTSTRAPPING} < 900006
_lex= usr.bin/lex _lex= usr.bin/lex
.endif
.if ${BOOTSTRAPPING} < 1000013
_yacc= usr.bin/yacc _yacc= usr.bin/yacc
.endif .endif
@ -1029,16 +1033,10 @@ _yacc= usr.bin/yacc
_awk= usr.bin/awk _awk= usr.bin/awk
.endif .endif
.if ${MK_BSNMP} != "no" && \ .if ${MK_BSNMP} != "no" && !exists(/usr/sbin/gensnmptree)
(${BOOTSTRAPPING} < 700018 || !exists(/usr/sbin/gensnmptree))
_gensnmptree= usr.sbin/bsnmpd/gensnmptree _gensnmptree= usr.sbin/bsnmpd/gensnmptree
.endif .endif
.if ${MK_RESCUE} != "no" && \
${BOOTSTRAPPING} < 700026
_crunchgen= usr.sbin/crunch/crunchgen
.endif
.if ${MK_CLANG} != "no" .if ${MK_CLANG} != "no"
_clang_tblgen= \ _clang_tblgen= \
lib/clang/libllvmsupport \ lib/clang/libllvmsupport \
@ -1088,12 +1086,11 @@ bootstrap-tools:
${_mklocale} \ ${_mklocale} \
usr.bin/rpcgen \ usr.bin/rpcgen \
${_sed} \ ${_sed} \
${_lex} \
${_yacc} \ ${_yacc} \
${_lex} \
usr.bin/xinstall \ usr.bin/xinstall \
${_gensnmptree} \ ${_gensnmptree} \
usr.sbin/config \ usr.sbin/config
${_crunchgen}
${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
cd ${.CURDIR}/${_tool}; \ cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \ ${MAKE} DIRPRFX=${_tool}/ obj; \
@ -1200,7 +1197,7 @@ cross-tools:
# #
# hierarchy - ensure that all the needed directories are present # hierarchy - ensure that all the needed directories are present
# #
hierarchy: hierarchy hier:
cd ${.CURDIR}/etc; ${MAKE} distrib-dirs cd ${.CURDIR}/etc; ${MAKE} distrib-dirs
# #
@ -1277,6 +1274,11 @@ _ofed_lib= contrib/ofed/usr.lib/
.endif .endif
_generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ${_ofed_lib} _generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ${_ofed_lib}
.for _DIR in ${LOCAL_LIB_DIRS}
.if exists(${.CURDIR}/${_DIR}/Makefile)
_generic_libs+= ${_DIR}
.endif
.endfor
lib/libopie__L lib/libtacplus__L: lib/libmd__L lib/libopie__L lib/libtacplus__L: lib/libmd__L
@ -1649,8 +1651,8 @@ _xi-mtree:
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${XDDESTDIR}/usr/include >/dev/null -p ${XDDESTDIR}/usr/include >/dev/null
.ORDER: _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links .ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links
xdev-install: _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links
_xi-cross-tools: _xi-cross-tools:
@echo "_xi-cross-tools" @echo "_xi-cross-tools"

View File

@ -38,6 +38,31 @@
# xargs -n1 | sort | uniq -d; # xargs -n1 | sort | uniq -d;
# done # done
# 20120621: remove old man page
OLD_FILES+=usr/share/man/man8/vnconfig.8.gz
# 20120613: auth.conf removed
OLD_FILES+=etc/auth.conf
OLD_FILES+=usr/share/examples/etc/auth.conf
OLD_FILES+=usr/share/man/man3/auth.3.gz
OLD_FILES+=usr/share/man/man5/auth.conf.5.gz
# 20120530: kde pam lives now in ports
OLD_FILES+=etc/pam.d/kde
# 20120505: new clang import installed a redundant internal header
OLD_FILES+=usr/include/clang/3.1/stdalign.h
# 20120428: MD2 removed from libmd
OLD_FILES+=usr/include/md2.h
OLD_FILES+=usr/share/man/man3/MD2Data.3.gz
OLD_FILES+=usr/share/man/man3/MD2End.3.gz
OLD_FILES+=usr/share/man/man3/MD2File.3.gz
OLD_FILES+=usr/share/man/man3/MD2FileChunk.3.gz
OLD_FILES+=usr/share/man/man3/MD2Final.3.gz
OLD_FILES+=usr/share/man/man3/MD2Init.3.gz
OLD_FILES+=usr/share/man/man3/MD2Update.3.gz
OLD_FILES+=usr/share/man/man3/md2.3.gz
# 20120425: libusb version bump (r234684)
OLD_LIBS+=usr/lib/libusb.so.2
OLD_LIBS+=usr/lib32/libusb.so.2
OLD_FILES+=usr/share/man/man3/libsub_get_active_config_descriptor.3.gz
# 20120415: new clang import which bumps version from 3.0 to 3.1 # 20120415: new clang import which bumps version from 3.0 to 3.1
OLD_FILES+=usr/include/clang/3.0/altivec.h OLD_FILES+=usr/include/clang/3.0/altivec.h
OLD_FILES+=usr/include/clang/3.0/avxintrin.h OLD_FILES+=usr/include/clang/3.0/avxintrin.h
@ -54,6 +79,17 @@ OLD_FILES+=usr/include/clang/3.0/wmmintrin.h
OLD_FILES+=usr/include/clang/3.0/x86intrin.h OLD_FILES+=usr/include/clang/3.0/x86intrin.h
OLD_FILES+=usr/include/clang/3.0/xmmintrin.h OLD_FILES+=usr/include/clang/3.0/xmmintrin.h
OLD_DIRS+=usr/include/clang/3.0 OLD_DIRS+=usr/include/clang/3.0
# 20120412: BIND 9.8.1 release notes removed
OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.pdf
OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.txt
OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.html
OLD_FILES+=usr/share/doc/bind9/release-notes.css
# 20120330: legacy(4) moved to x86
OLD_FILES+=usr/include/machine/legacyvar.h
# 20120324: MPI headers updated
OLD_FILES+=usr/include/dev/mpt/mpilib/mpi_inb.h
# 20120322: hwpmc_mips24k.h removed
OLD_FILES+=usr/include/dev/hwpmc/hwpmc_mips24k.h
# 20120322: Update heimdal to 1.5.1. # 20120322: Update heimdal to 1.5.1.
OLD_FILES+=usr/include/krb5-v4compat.h \ OLD_FILES+=usr/include/krb5-v4compat.h \
usr/include/krb_err.h \ usr/include/krb_err.h \
@ -98,6 +134,8 @@ OLD_LIBS+=usr/lib/libasn1.so.10 \
# 20120309: Remove fifofs header files. # 20120309: Remove fifofs header files.
OLD_FILES+=usr/include/fs/fifofs/fifo.h OLD_FILES+=usr/include/fs/fifofs/fifo.h
OLD_DIRS+=usr/include/fs/fifofs OLD_DIRS+=usr/include/fs/fifofs
# 20120304: xlocale cleanup
OLD_FILES+=usr/include/_xlocale_ctype.h
# 20120225: libarchive 3.0.3 # 20120225: libarchive 3.0.3
OLD_FILES+=usr/share/man/man3/archive_read_data_into_buffer.3.gz \ OLD_FILES+=usr/share/man/man3/archive_read_data_into_buffer.3.gz \
usr/share/man/man3/archive_read_support_compression_all.3.gz \ usr/share/man/man3/archive_read_support_compression_all.3.gz \
@ -459,7 +497,7 @@ OLD_FILES+=usr/share/man/man5/lastlog.5.gz
OLD_FILES+=usr/share/man/man5/utmp.5.gz OLD_FILES+=usr/share/man/man5/utmp.5.gz
OLD_FILES+=usr/share/man/man5/wtmp.5.gz OLD_FILES+=usr/share/man/man5/wtmp.5.gz
OLD_LIBS+=lib/libutil.so.8 OLD_LIBS+=lib/libutil.so.8
OLB_LIBS+=usr/lib32/libutil.so.8 OLD_LIBS+=usr/lib32/libutil.so.8
# 20100105: new userland semaphore implementation # 20100105: new userland semaphore implementation
OLD_FILES+=usr/include/sys/semaphore.h OLD_FILES+=usr/include/sys/semaphore.h
# 20100103: ntptrace(8) removed # 20100103: ntptrace(8) removed
@ -579,6 +617,7 @@ OLD_LIBS+=lib/libipx.so.4
OLD_LIBS+=lib/libkiconv.so.3 OLD_LIBS+=lib/libkiconv.so.3
OLD_LIBS+=lib/libkvm.so.4 OLD_LIBS+=lib/libkvm.so.4
OLD_LIBS+=lib/libmd.so.4 OLD_LIBS+=lib/libmd.so.4
OLD_LIBS+=lib/libmd.so.5
OLD_LIBS+=lib/libncurses.so.7 OLD_LIBS+=lib/libncurses.so.7
OLD_LIBS+=lib/libncursesw.so.7 OLD_LIBS+=lib/libncursesw.so.7
OLD_LIBS+=lib/libnvpair.so.1 OLD_LIBS+=lib/libnvpair.so.1

View File

@ -24,6 +24,23 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10.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".)
20120628:
The sort utility has been replaced with BSD sort. For now, GNU sort
is also available as "gnusort" or the default can be set back to
GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be
installed as "bsdsort".
20120611:
A new version of ZFS (pool version 5000) has been merged to -HEAD.
Starting with this version the old system of ZFS pool versioning
is superseded by "feature flags". This concept enables forward
compatibility against certain future changes in functionality of ZFS
pools. The first read-only compatible "feature flag" for ZFS pools
is named "com.delphix:async_destroy". For more information
read the new zpool-features(5) manual page.
Please refer to the "ZFS notes" section of this file for information
on upgrading boot ZFS pools.
20120417: 20120417:
The malloc(3) implementation embedded in libc now uses sources imported The malloc(3) implementation embedded in libc now uses sources imported
as contrib/jemalloc. The most disruptive API change is to as contrib/jemalloc. The most disruptive API change is to

View File

@ -7,12 +7,12 @@ SRCS= buf.c cbc.c glbl.c io.c main.c re.c sub.c undo.c
LINKS= ${BINDIR}/ed ${BINDIR}/red LINKS= ${BINDIR}/ed ${BINDIR}/red
MLINKS= ed.1 red.1 MLINKS= ed.1 red.1
.if !defined(RELEASE_CRUNCH) .if !defined(RELEASE_CRUNCH) && \
.if ${MK_OPENSSL} != "no" ${MK_OPENSSL} != "no" && \
${MK_ED_CRYPTO} != "no"
CFLAGS+=-DDES CFLAGS+=-DDES
DPADD= ${LIBCRYPTO} DPADD= ${LIBCRYPTO}
LDADD= -lcrypto LDADD= -lcrypto
.endif .endif
.endif
.include <bsd.prog.mk> .include <bsd.prog.mk>

View File

@ -77,7 +77,7 @@ Operators with equal precedence are grouped within symbols
and and
.Ql } . .Ql } .
.Bl -tag -width indent .Bl -tag -width indent
.It Ar expr1 Li | Ar expr2 .It Ar expr1 Li \&| Ar expr2
Return the evaluation of Return the evaluation of
.Ar expr1 .Ar expr1
if it is neither an empty string nor zero; if it is neither an empty string nor zero;

View File

@ -74,7 +74,6 @@ int to_integer(struct val *);
void to_string(struct val *); void to_string(struct val *);
int yyerror(const char *); int yyerror(const char *);
int yylex(void); int yylex(void);
int yyparse(void);
%} %}

View File

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd January 13, 2009 .Dd May 11, 2012
.Dt KENV 1 .Dt KENV 1
.Os .Os
.Sh NAME .Sh NAME
@ -32,9 +32,9 @@
.Nd dump or modify the kernel environment .Nd dump or modify the kernel environment
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Op Fl hq .Op Fl hNq
.Nm .Nm
.Op Fl q .Op Fl qv
.Ar variable Ns Op = Ns Ar value .Ar variable Ns Op = Ns Ar value
.Nm .Nm
.Op Fl q .Op Fl q
@ -54,6 +54,11 @@ name is specified,
.Nm .Nm
will only report that value. will only report that value.
If the If the
.Fl N
option is specified,
.Nm
will only display variable names and not their values.
If the
.Fl u .Fl u
option is specified, option is specified,
.Nm .Nm
@ -68,6 +73,13 @@ If the
option is set, warnings normally printed as a result of being unable to option is set, warnings normally printed as a result of being unable to
perform the requested operation will be suppressed. perform the requested operation will be suppressed.
.Pp .Pp
If the
.Fl v
option is set, the variable name will be printed out for the
environment variable in addition to the value when
.Nm
is executed with a variable name.
.Pp
Variables can be added to the kernel environment using the Variables can be added to the kernel environment using the
.Pa /boot/loader.conf .Pa /boot/loader.conf
file, or also statically compiled into the kernel using the statement file, or also statically compiled into the kernel using the statement

View File

@ -42,15 +42,17 @@ static int ksetenv(char *, char *);
static int kunsetenv(char *); static int kunsetenv(char *);
static int hflag = 0; static int hflag = 0;
static int Nflag = 0;
static int qflag = 0; static int qflag = 0;
static int uflag = 0; static int uflag = 0;
static int vflag = 0;
static void static void
usage(void) usage(void)
{ {
(void)fprintf(stderr, "%s\n%s\n%s\n", (void)fprintf(stderr, "%s\n%s\n%s\n",
"usage: kenv [-hq]", "usage: kenv [-hNq]",
" kenv [-q] variable[=value]", " kenv [-qv] variable[=value]",
" kenv [-q] -u variable"); " kenv [-q] -u variable");
exit(1); exit(1);
} }
@ -64,17 +66,23 @@ main(int argc, char **argv)
error = 0; error = 0;
val = NULL; val = NULL;
env = NULL; env = NULL;
while ((ch = getopt(argc, argv, "hqu")) != -1) { while ((ch = getopt(argc, argv, "hNquv")) != -1) {
switch (ch) { switch (ch) {
case 'h': case 'h':
hflag++; hflag++;
break; break;
case 'N':
Nflag++;
break;
case 'q': case 'q':
qflag++; qflag++;
break; break;
case 'u': case 'u':
uflag++; uflag++;
break; break;
case 'v':
vflag++;
break;
default: default:
usage(); usage();
} }
@ -91,9 +99,9 @@ main(int argc, char **argv)
argv++; argv++;
argc--; argc--;
} }
if (hflag && (env != NULL)) if ((hflag || Nflag) && env != NULL)
usage(); usage();
if ((argc > 0) || (uflag && (env == NULL))) if (argc > 0 || ((uflag || vflag) && env == NULL))
usage(); usage();
if (env == NULL) { if (env == NULL) {
error = kdumpenv(); error = kdumpenv();
@ -152,7 +160,10 @@ kdumpenv(void)
if (cp == NULL) if (cp == NULL)
continue; continue;
*cp++ = '\0'; *cp++ = '\0';
printf("%s=\"%s\"\n", buf, cp); if (Nflag)
printf("%s\n", buf);
else
printf("%s=\"%s\"\n", buf, cp);
buf = cp; buf = cp;
} }
return (0); return (0);
@ -167,7 +178,10 @@ kgetenv(char *env)
ret = kenv(KENV_GET, env, buf, sizeof(buf)); ret = kenv(KENV_GET, env, buf, sizeof(buf));
if (ret == -1) if (ret == -1)
return (ret); return (ret);
printf("%s\n", buf); if (vflag)
printf("%s=\"%s\"\n", env, buf);
else
printf("%s\n", buf);
return (0); return (0);
} }

View File

@ -1,12 +1,15 @@
# @(#)Makefile 8.1 (Berkeley) 6/2/93 # @(#)Makefile 8.1 (Berkeley) 6/2/93
# $FreeBSD$ # $FreeBSD$
.include <bsd.own.mk>
PROG= ls PROG= ls
SRCS= cmp.c ls.c print.c util.c SRCS= cmp.c ls.c print.c util.c
DPADD= ${LIBUTIL} DPADD= ${LIBUTIL}
LDADD= -lutil LDADD= -lutil
.if !defined(RELEASE_CRUNCH) .if !defined(RELEASE_CRUNCH) && \
${MK_LS_COLORS} != no
CFLAGS+= -DCOLORLS CFLAGS+= -DCOLORLS
DPADD+= ${LIBTERMCAP} DPADD+= ${LIBTERMCAP}
LDADD+= -ltermcap LDADD+= -ltermcap

View File

@ -76,6 +76,7 @@ static VAR var[] = {
{"comm", "COMMAND", NULL, LJUST, ucomm, 0, CHAR, NULL, 0}, {"comm", "COMMAND", NULL, LJUST, ucomm, 0, CHAR, NULL, 0},
{"command", "COMMAND", NULL, COMM|LJUST|USER, command, 0, {"command", "COMMAND", NULL, COMM|LJUST|USER, command, 0,
CHAR, NULL, 0}, CHAR, NULL, 0},
{"cow", "COW", NULL, 0, kvar, KOFF(ki_cow), UINT, "u", 0},
{"cpu", "CPU", NULL, 0, kvar, KOFF(ki_estcpu), UINT, "d", 0}, {"cpu", "CPU", NULL, 0, kvar, KOFF(ki_estcpu), UINT, "d", 0},
{"cputime", "", "time", 0, NULL, 0, CHAR, NULL, 0}, {"cputime", "", "time", 0, NULL, 0, CHAR, NULL, 0},
{"egid", "", "gid", 0, NULL, 0, CHAR, NULL, 0}, {"egid", "", "gid", 0, NULL, 0, CHAR, NULL, 0},

View File

@ -29,7 +29,7 @@
.\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" @(#)ps.1 8.3 (Berkeley) 4/18/94
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd March 8, 2012 .Dd May 20, 2012
.Dt PS 1 .Dt PS 1
.Os .Os
.Sh NAME .Sh NAME
@ -496,6 +496,8 @@ login class
command command
.It Cm command .It Cm command
command and arguments command and arguments
.It Cm cow
number of copy-on-write faults
.It Cm cpu .It Cm cpu
short-term CPU usage factor (for scheduling) short-term CPU usage factor (for scheduling)
.It Cm emul .It Cm emul

View File

@ -116,17 +116,11 @@ The
.Nm .Nm
utility handles third party copies, where neither source nor target files utility handles third party copies, where neither source nor target files
are on the current machine. are on the current machine.
.Sh FILES
.Bl -tag -width ".Pa /etc/auth.conf" -compact
.It Pa /etc/auth.conf
configure authentication services
.El
.Sh SEE ALSO .Sh SEE ALSO
.Xr cp 1 , .Xr cp 1 ,
.Xr ftp 1 , .Xr ftp 1 ,
.Xr rlogin 1 , .Xr rlogin 1 ,
.Xr rsh 1 , .Xr rsh 1 ,
.Xr auth.conf 5 ,
.Xr hosts.equiv 5 .Xr hosts.equiv 5
.Sh HISTORY .Sh HISTORY
The The

View File

@ -61,7 +61,6 @@ __FBSDID("$FreeBSD$");
#include <err.h> #include <err.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <libutil.h>
#include <limits.h> #include <limits.h>
#include <netdb.h> #include <netdb.h>
#include <paths.h> #include <paths.h>

View File

@ -301,10 +301,16 @@ rm_tree(char **argv)
if (fflag) if (fflag)
continue; continue;
/* FALLTHROUGH */ /* FALLTHROUGH */
default:
case FTS_F:
case FTS_NSOK:
if (Pflag) if (Pflag)
if (!rm_overwrite(p->fts_accpath, NULL)) if (!rm_overwrite(p->fts_accpath, p->fts_info ==
FTS_NSOK ? NULL : p->fts_statp))
continue; continue;
/* FALLTHROUGH */
default:
rval = unlink(p->fts_accpath); rval = unlink(p->fts_accpath);
if (rval == 0 || (fflag && errno == ENOENT)) { if (rval == 0 || (fflag && errno == ENOENT)) {
if (rval == 0 && vflag) if (rval == 0 && vflag)
@ -408,7 +414,7 @@ rm_file(char **argv)
int int
rm_overwrite(char *file, struct stat *sbp) rm_overwrite(char *file, struct stat *sbp)
{ {
struct stat sb; struct stat sb, sb2;
struct statfs fsb; struct statfs fsb;
off_t len; off_t len;
int bsize, fd, wlen; int bsize, fd, wlen;
@ -427,8 +433,15 @@ rm_overwrite(char *file, struct stat *sbp)
file, sbp->st_ino); file, sbp->st_ino);
return (0); return (0);
} }
if ((fd = open(file, O_WRONLY, 0)) == -1) if ((fd = open(file, O_WRONLY|O_NONBLOCK|O_NOFOLLOW, 0)) == -1)
goto err; 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) if (fstatfs(fd, &fsb) == -1)
goto err; goto err;
bsize = MAX(fsb.f_iosize, 1024); bsize = MAX(fsb.f_iosize, 1024);

View File

@ -38,7 +38,7 @@ build-tools: mkinit mknodes mksyntax
.ORDER: builtins.c builtins.h .ORDER: builtins.c builtins.h
builtins.c builtins.h: mkbuiltins builtins.def builtins.c builtins.h: mkbuiltins builtins.def
cd ${.CURDIR}; sh mkbuiltins ${.OBJDIR} sh ${.CURDIR}/mkbuiltins ${.CURDIR}
init.c: mkinit alias.c eval.c exec.c input.c jobs.c options.c parser.c \ init.c: mkinit alias.c eval.c exec.c input.c jobs.c options.c parser.c \
redir.c trap.c var.c redir.c trap.c var.c

View File

@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$");
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <termios.h>
#include "shell.h" #include "shell.h"
#include "options.h" #include "options.h"

View File

@ -35,17 +35,17 @@
# $FreeBSD$ # $FreeBSD$
temp=`/usr/bin/mktemp -t ka` temp=`/usr/bin/mktemp -t ka`
havejobs=0
if grep '^#define[ ]*JOBS[ ]*1' shell.h > /dev/null
then havejobs=1
fi
havehist=1 havehist=1
if [ "X$1" = "X-h" ]; then if [ "X$1" = "X-h" ]; then
havehist=0 havehist=0
shift shift
fi fi
objdir=$1 srcdir=$1
exec > ${objdir}/builtins.c havejobs=0
if grep '^#define[ ]*JOBS[ ]*1' $srcdir/shell.h > /dev/null
then havejobs=1
fi
exec > builtins.c
cat <<\! cat <<\!
/* /*
* This file was generated by the mkbuiltins program. * This file was generated by the mkbuiltins program.
@ -57,7 +57,7 @@ cat <<\!
! !
awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \ awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \
print $0}' builtins.def | sed 's/-[hj]//' > $temp print $0}' $srcdir/builtins.def | sed 's/-[hj]//' > $temp
echo 'int (*const builtinfunc[])(int, char **) = {' echo 'int (*const builtinfunc[])(int, char **) = {'
awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp
echo '}; echo '};
@ -74,7 +74,7 @@ awk '{ for (i = 2 ; i <= NF ; i++) {
echo ' { NULL, 0, 0 } echo ' { NULL, 0, 0 }
};' };'
exec > ${objdir}/builtins.h exec > builtins.h
cat <<\! cat <<\!
/* /*
* This file was generated by the mkbuiltins program. * This file was generated by the mkbuiltins program.

View File

@ -375,8 +375,8 @@ The following is a list of valid operators:
.Bl -tag -width indent .Bl -tag -width indent
.It Control operators: .It Control operators:
.Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact
.It Li & Ta Li && Ta Li ( Ta Li ) Ta Li \en .It Li & Ta Li && Ta Li \&( Ta Li \&) Ta Li \en
.It Li ;; Ta Li ;& Ta Li ; Ta Li | Ta Li || .It Li ;; Ta Li ;& Ta Li \&; Ta Li \&| Ta Li ||
.El .El
.It Redirection operators: .It Redirection operators:
.Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact

View File

@ -43,7 +43,7 @@
.Nm .Nm
.Ar expression .Ar expression
.Nm \&[ .Nm \&[
.Ar expression Cm ] .Ar expression Cm \&]
.Sh DESCRIPTION .Sh DESCRIPTION
The The
.Nm .Nm

View File

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd September 7, 2005 .Dd May 23, 2012
.Dt UUIDGEN 1 .Dt UUIDGEN 1
.Os .Os
.Sh NAME .Sh NAME
@ -52,8 +52,11 @@ instructs
to not generate them in batch, but one at a time. to not generate them in batch, but one at a time.
.It Fl n .It Fl n
This option controls the number of identifiers generated. This option controls the number of identifiers generated.
By default, multiple By default, multiple identifiers are generated in batch.
identifiers are generated in batch. The upper hard limit is 2048
.Po see
.Xr uuidgen 2
.Pc .
.It Fl o .It Fl o
Redirect output to Redirect output to
.Ar filename .Ar filename

View File

@ -27,11 +27,11 @@
* *
*/ */
#include_next <stdlib.h>
#ifndef _COMPAT_OPENSOLARIS_STDLIB_H_ #ifndef _COMPAT_OPENSOLARIS_STDLIB_H_
#define _COMPAT_OPENSOLARIS_STDLIB_H_ #define _COMPAT_OPENSOLARIS_STDLIB_H_
#include_next <stdlib.h>
#define getexecname getprogname #define getexecname getprogname
#endif #endif

View File

@ -45,7 +45,7 @@ devid_str_decode(char *devidstr, ddi_devid_t *retdevid, char **retminor_name)
return (EINVAL); return (EINVAL);
} }
*retminor_name = strdup(""); *retminor_name = strdup("");
if (*retminor_name == NULL); if (*retminor_name == NULL)
return (ENOMEM); return (ENOMEM);
return (0); return (0);
} }

View File

@ -0,0 +1,5 @@
Apps - Specific Application based analysis
These are DTrace scripts that are written to analyse a particular
application or applictaion layer protocol. For example, Apache or NFS
scripts would appear here.

View File

@ -0,0 +1,132 @@
#!/usr/sbin/dtrace -s
/*
* httpdstat.d - realtime httpd statistics. Uses DTrace.
*
* $Id: httpdstat.d 2 2007-08-01 10:01:43Z brendan $
*
* USAGE: httpdstat.d [interval [count]]
*
* interval seconds
* count number of samples
*
* FIELDS:
* TIME Time, string
* NUM Number of connections
* GET Number of "GET"s
* POST Number of "POST"s
* HEAD Number of "HEAD"s
* TRACE Number of "TRACE"s
*
* All of the statistics are printed as a value per interval (not per second).
*
* NOTE: This version does not process subsequent operations on keepalives.
*
* IDEA: Ryan Matteson (who first wrote a solution to this).
*
* COPYRIGHT: Copyright (c) 2005 Brendan Gregg.
*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at Docs/cddl1.txt
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* CDDL HEADER END
*
* 20-Nov-2005 Brendan Gregg Created this.
*/
#pragma D option quiet
#pragma D option defaultargs
inline int SCREEN = 21;
/*
* Program Start
*/
dtrace:::BEGIN
{
num = 0; get = 0; head = 0; post = 0; trac = 0;
lines = SCREEN + 1;
secs = $1 ? $1 : 1;
counts = $2 ? $2 : -1;
first = 1;
}
profile:::tick-1sec
{
secs--;
}
/*
* Print Header
*/
dtrace:::BEGIN,
profile:::tick-1sec
/first || (secs == 0 && lines > SCREEN)/
{
printf("%-20s %6s %6s %5s %5s %5s\n", "TIME",
"NUM", "GET", "POST", "HEAD", "TRACE");
lines = 0;
first = 0;
}
/*
* Track Accept Events
*/
syscall::accept:return
/execname == "httpd"/
{
self->buf = 1;
}
syscall::read:entry
/self->buf/
{
self->buf = arg1;
}
/*
* Tally Data
*/
syscall::read:return
/self->buf && arg0/
{
this->str = (char *)copyin(self->buf, arg0);
this->str[4] = '\0';
get += stringof(this->str) == "GET " ? 1 : 0;
post += stringof(this->str) == "POST" ? 1 : 0;
head += stringof(this->str) == "HEAD" ? 1 : 0;
trac += stringof(this->str) == "TRAC" ? 1 : 0;
num++;
self->buf = 0;
}
/*
* Print Output
*/
profile:::tick-1sec
/secs == 0/
{
printf("%-20Y %6d %6d %5d %5d %5d\n", walltimestamp,
num, get, post, head, trac);
num = 0; get = 0; head = 0; post = 0; trac = 0;
secs = $1 ? $1 : 1;
lines++;
counts--;
}
/*
* End
*/
profile:::tick-1sec
/counts == 0/
{
exit(0);
}

View File

@ -0,0 +1,102 @@
#!/usr/sbin/dtrace -s
/*
* nfswizard.d - nfs client activity wizard.
* Written using DTrace (Solaris 10 3/05).
*
* This examines activity caused by NFS client processes on the same server
* that you are running this script on. A detailed report is generated
* to explain various details of NFS client activity, including response
* times and file access.
*
* $Id: nfswizard.d 3 2007-08-01 10:50:08Z brendan $
*
* USAGE: nfswizard.d # hit Ctrl-C to end sample
*
* COPYRIGHT: Copyright (c) 2005, 2006 Brendan Gregg.
*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at Docs/cddl1.txt
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* CDDL HEADER END
*
* 02-Dec-2005 Brendan Gregg Created this.
* 20-Apr-2006 " " Last update.
*/
#pragma D option quiet
dtrace:::BEGIN
{
printf("Tracing... Hit Ctrl-C to end.\n");
scriptstart = walltimestamp;
timestart = timestamp;
}
io:nfs::start
{
/* tally file sizes */
@file[args[2]->fi_pathname] = sum(args[0]->b_bcount);
/* time response */
start[args[0]->b_addr] = timestamp;
/* overall stats */
@rbytes = sum(args[0]->b_flags & B_READ ? args[0]->b_bcount : 0);
@wbytes = sum(args[0]->b_flags & B_READ ? 0 : args[0]->b_bcount);
@events = count();
}
io:nfs::done
/start[args[0]->b_addr]/
{
/* calculate and save response time stats */
this->elapsed = timestamp - start[args[0]->b_addr];
@maxtime = max(this->elapsed);
@avgtime = avg(this->elapsed);
@qnztime = quantize(this->elapsed / 1000);
}
dtrace:::END
{
/* print header */
printf("NFS Client Wizard. %Y -> %Y\n\n", scriptstart, walltimestamp);
/* print read/write stats */
printa("Read: %@d bytes ", @rbytes);
normalize(@rbytes, 1000000);
printa("(%@d Mb)\n", @rbytes);
printa("Write: %@d bytes ", @wbytes);
normalize(@wbytes, 1000000);
printa("(%@d Mb)\n\n", @wbytes);
/* print throughput stats */
denormalize(@rbytes);
normalize(@rbytes, (timestamp - timestart) / 1000000);
printa("Read: %@d Kb/sec\n", @rbytes);
denormalize(@wbytes);
normalize(@wbytes, (timestamp - timestart) / 1000000);
printa("Write: %@d Kb/sec\n\n", @wbytes);
/* print time stats */
printa("NFS I/O events: %@d\n", @events);
normalize(@avgtime, 1000000);
printa("Avg response time: %@d ms\n", @avgtime);
normalize(@maxtime, 1000000);
printa("Max response time: %@d ms\n\n", @maxtime);
printa("Response times (us):%@d\n", @qnztime);
/* print file stats */
printf("Top 25 files accessed (bytes):\n");
printf(" %-64s %s\n", "PATHNAME", "BYTES");
trunc(@file, 25);
printa(" %-64s %@d\n", @file);
}

View File

@ -0,0 +1,268 @@
#!/usr/bin/sh
#
# shellsnoop - A program to print read/write details from shells,
# such as keystrokes and command outputs.
# Written using DTrace (Solaris 10 3/05).
#
# This program sounds somewhat dangerous (snooping keystrokes), but is
# no more so than /usr/bin/truss, and both need root or dtrace privileges to
# run. In fact, less dangerous, as we only print visible text (not password
# text, for example). Having said that, it goes without saying that this
# program shouldn't be used for breeching privacy of other users.
#
# This was written as a tool to demonstrate the capabilities of DTrace.
#
# $Id: shellsnoop 19 2007-09-12 07:47:59Z brendan $
#
# USAGE: shellsnoop [-hqsv] [-p PID] [-u UID]
#
# -q # quiet, only print data
# -s # include start time, us
# -v # include start time, string
# -p PID # process ID to snoop
# -u UID # user ID to snoop
# eg,
# shellsnoop # default output
# shellsnoop -v # human readable timestamps
# shellsnoop -p 1892 # snoop this PID only
# shellsnoop -qp 1892 # watch this PID data only
#
# FIELDS:
# UID User ID
# PID process ID
# PPID parent process ID
# COMM command name
# DIR direction (R read, W write)
# TEXT text contained in the read/write
# TIME timestamp for the command, us
# STRTIME timestamp for the command, string
#
# SEE ALSO: ttywatcher
#
# COPYRIGHT: Copyright (c) 2005 Brendan Gregg.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at Docs/cddl1.txt
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# CDDL HEADER END
#
# Author: Brendan Gregg [Sydney, Australia]
#
# 28-Mar-2004 Brendan Gregg Created this.
# 21-Jan-2005 " " Wrapped in sh to provide options.
# 30-Nov-2005 " " Fixed trailing buffer text bug.
# 30-Nov-2005 " " Fixed sh no keystroke text in quiet bug.
# 30-Nov-2005 " " Last update.
#
##############################
# --- Process Arguments ---
#
opt_pid=0; opt_uid=0; opt_time=0; opt_timestr=0; opt_quiet=0; opt_debug=0
filter=0; pid=0; uid=0
while getopts dhp:qsu:v name
do
case $name in
d) opt_debug=1 ;;
p) opt_pid=1; pid=$OPTARG ;;
q) opt_quiet=1 ;;
s) opt_time=1 ;;
u) opt_uid=1; uid=$OPTARG ;;
v) opt_timestr=1 ;;
h|?) cat <<-END >&2
USAGE: shellsnoop [-hqsv] [-p PID] [-u UID]
shellsnoop # default output
-q # quiet, only print data
-s # include start time, us
-v # include start time, string
-p PID # process ID to snoop
-u UID # user ID to snoop
END
exit 1
esac
done
if [ $opt_quiet -eq 1 ]; then
opt_time=0; opt_timestr=0
fi
if [ $opt_pid -eq 1 -o $opt_uid -eq 1 ]; then
filter=1
fi
#################################
# --- Main Program, DTrace ---
#
dtrace -n '
/*
* Command line arguments
*/
inline int OPT_debug = '$opt_debug';
inline int OPT_quiet = '$opt_quiet';
inline int OPT_pid = '$opt_pid';
inline int OPT_uid = '$opt_uid';
inline int OPT_time = '$opt_time';
inline int OPT_timestr = '$opt_timestr';
inline int FILTER = '$filter';
inline int PID = '$pid';
inline int UID = '$uid';
#pragma D option quiet
#pragma D option switchrate=20hz
/*
* Print header
*/
dtrace:::BEGIN /OPT_time == 1/
{
printf("%-14s ","TIME");
}
dtrace:::BEGIN /OPT_timestr == 1/
{
printf("%-20s ","STRTIME");
}
dtrace:::BEGIN /OPT_quiet == 0/
{
printf("%5s %5s %8s %3s %s\n", "PID", "PPID", "CMD", "DIR", "TEXT");
}
/*
* Remember this PID is a shell child
*/
syscall::exec:entry, syscall::exece:entry
/execname == "sh" || execname == "ksh" || execname == "csh" ||
execname == "tcsh" || execname == "zsh" || execname == "bash"/
{
child[pid] = 1;
/* debug */
this->parent = (char *)curthread->t_procp->p_parent->p_user.u_comm;
OPT_debug == 1 ? printf("PID %d CMD %s started. (%s)\n",
pid, execname, stringof(this->parent)) : 1;
}
syscall::exec:entry, syscall::exece:entry
/(OPT_pid == 1 && PID != ppid) || (OPT_uid == 1 && UID != uid)/
{
/* forget if filtered */
child[pid] = 0;
}
/*
* Print shell keystrokes
*/
syscall::write:entry, syscall::read:entry
/(execname == "sh" || execname == "ksh" || execname == "csh" ||
execname == "tcsh" || execname == "zsh" || execname == "bash")
&& (arg0 >= 0 && arg0 <= 2)/
{
self->buf = arg1;
}
syscall::write:entry, syscall::read:entry
/(OPT_pid == 1 && PID != pid) || (OPT_uid == 1 && UID != uid)/
{
self->buf = 0;
}
syscall::write:return, syscall::read:return
/self->buf && child[pid] == 0 && OPT_time == 1/
{
printf("%-14d ", timestamp/1000);
}
syscall::write:return, syscall::read:return
/self->buf && child[pid] == 0 && OPT_timestr == 1/
{
printf("%-20Y ", walltimestamp);
}
syscall::write:return, syscall::read:return
/self->buf && child[pid] == 0 && OPT_quiet == 0/
{
this->text = (char *)copyin(self->buf, arg0);
this->text[arg0] = '\'\\0\'';
printf("%5d %5d %8s %3s %s\n", pid, curpsinfo->pr_ppid, execname,
probefunc == "read" ? "R" : "W", stringof(this->text));
}
syscall::write:return
/self->buf && child[pid] == 0 && OPT_quiet == 1/
{
this->text = (char *)copyin(self->buf, arg0);
this->text[arg0] = '\'\\0\'';
printf("%s", stringof(this->text));
}
syscall::read:return
/self->buf && execname == "sh" && child[pid] == 0 && OPT_quiet == 1/
{
this->text = (char *)copyin(self->buf, arg0);
this->text[arg0] = '\'\\0\'';
printf("%s", stringof(this->text));
}
syscall::write:return, syscall::read:return
/self->buf && child[pid] == 0/
{
self->buf = 0;
}
/*
* Print command output
*/
syscall::write:entry, syscall::read:entry
/child[pid] == 1 && (arg0 == 1 || arg0 == 2)/
{
self->buf = arg1;
}
syscall::write:return, syscall::read:return
/self->buf && OPT_time == 1/
{
printf("%-14d ", timestamp/1000);
}
syscall::write:return, syscall::read:return
/self->buf && OPT_timestr == 1/
{
printf("%-20Y ", walltimestamp);
}
syscall::write:return, syscall::read:return
/self->buf && OPT_quiet == 0/
{
this->text = (char *)copyin(self->buf, arg0);
this->text[arg0] = '\'\\0\'';
printf("%5d %5d %8s %3s %s", pid, curpsinfo->pr_ppid, execname,
probefunc == "read" ? "R" : "W", stringof(this->text));
/* here we check if a newline is needed */
this->length = strlen(this->text);
printf("%s", this->text[this->length - 1] == '\'\\n\'' ? "" : "\n");
self->buf = 0;
}
syscall::write:return, syscall::read:return
/self->buf && OPT_quiet == 1/
{
this->text = (char *)copyin(self->buf, arg0);
this->text[arg0] = '\'\\0\'';
printf("%s", stringof(this->text));
self->buf = 0;
}
/*
* Cleanup
*/
syscall::rexit:entry
{
child[pid] = 0;
/* debug */
this->parent = (char *)curthread->t_procp->p_parent->p_user.u_comm;
OPT_debug == 1 ? printf("PID %d CMD %s exited. (%s)\n",
pid, execname, stringof(this->parent)) : 1;
}
'

View File

@ -0,0 +1,186 @@
#!/usr/sbin/dtrace -s
/*
* weblatency.d - website latency statistics.
* Written using DTrace (Solaris 10 3/05).
*
* $Id: weblatency.d 3 2007-08-01 10:50:08Z brendan $
*
* USAGE: weblatency.d # hit Ctrl-C to end sample
*
* See the code below for the "BROWSER" variable, which sets the browser
* to trace (currently set to "mozilla-bin").
*
* This is written as an experimental tool, and may not work at all with
* your browser.
*
* FIELDS:
* HOST Hostname from URL
* NUM Number of GETs
* AVGTIME(ms) Average time for response, ms
* MAXTIME(ms) Maximum time for response, ms
*
* NOTE:
*
* The latency measured here is from the browser sending the GET
* request to when the browser begins to recieve the response. It
* is an overall response time for the client, and encompasses
* connection speed delays, DNS lookups, proxy delays, and web server
* response time.
*
* IDEA: Bryan Cantrill (who wrote an elegant version for Sol 10 update 1)
*
* COPYRIGHT: Copyright (c) 2005, 2006 Brendan Gregg.
*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at Docs/cddl1.txt
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* CDDL HEADER END
*
* ToDo:
* Check write fd for socket, not file.
*
* 30-Nov-2005 Brendan Gregg Created this.
* 20-Apr-2006 " " Last update.
*/
#pragma D option quiet
/* browser's execname */
inline string BROWSER = "mozilla-bin";
/* maximum expected hostname length + "GET http://" */
inline int MAX_REQ = 64;
dtrace:::BEGIN
{
printf("Tracing... Hit Ctrl-C to end.\n");
}
/*
* Trace brower request
*
* This is achieved by matching writes for the browser's execname that
* start with "GET", and then timing from the return of the write to
* the return of the next read in the same thread. Various stateful flags
* are used: self->fd, self->read.
*
* For performance reasons, I'd like to only process writes that follow a
* connect(), however this approach fails to process keepalives.
*/
syscall::write:entry
/execname == BROWSER/
{
self->buf = arg1;
self->fd = arg0 + 1;
self->nam = "";
}
syscall::write:return
/self->fd/
{
this->str = (char *)copyin(self->buf, MAX_REQ);
this->str[4] = '\0';
self->fd = stringof(this->str) == "GET " ? self->fd : 0;
}
syscall::write:return
/self->fd/
{
/* fetch browser request */
this->str = (char *)copyin(self->buf, MAX_REQ);
this->str[MAX_REQ] = '\0';
/*
* This unrolled loop strips down a URL to it's hostname.
* We ought to use strtok(), but it's not available on Sol 10 3/05,
* so instead I used dirname(). It's not pretty - it's done so that
* this works on all Sol 10 versions.
*/
self->req = stringof(this->str);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->req = dirname(self->req);
self->nam = strlen(self->req) > 15 ? self->req : self->nam;
self->nam = basename(self->nam);
/* start the timer */
start[pid, self->fd - 1] = timestamp;
host[pid, self->fd - 1] = self->nam;
self->buf = 0;
self->fd = 0;
self->req = 0;
self->nam = 0;
}
/* this one wasn't a GET */
syscall::write:return
/self->buf/
{
self->buf = 0;
self->fd = 0;
}
syscall::read:entry
/execname == BROWSER && start[pid, arg0]/
{
self->fd = arg0 + 1;
}
/*
* Record host details
*/
syscall::read:return
/self->fd/
{
/* fetch details */
self->host = stringof(host[pid, self->fd - 1]);
this->start = start[pid, self->fd - 1];
/* save details */
@Avg[self->host] = avg((timestamp - this->start)/1000000);
@Max[self->host] = max((timestamp - this->start)/1000000);
@Num[self->host] = count();
/* clear vars */
start[pid, self->fd - 1] = 0;
host[pid, self->fd - 1] = 0;
self->host = 0;
self->fd = 0;
}
/*
* Output report
*/
dtrace:::END
{
printf("%-32s %11s\n", "HOST", "NUM");
printa("%-32s %@11d\n", @Num);
printf("\n%-32s %11s\n", "HOST", "AVGTIME(ms)");
printa("%-32s %@11d\n", @Avg);
printf("\n%-32s %11s\n", "HOST", "MAXTIME(ms)");
printa("%-32s %@11d\n", @Max);
}

View File

@ -0,0 +1 @@
../Mem/anonpgpid.d

View File

@ -0,0 +1 @@
../Disk/bitesize.d

View File

@ -0,0 +1 @@
../Net/connections

View File

@ -0,0 +1 @@
../Kernel/cpudists

View File

@ -0,0 +1 @@
../Kernel/cputimes

View File

@ -0,0 +1 @@
../Cpu/cputypes.d

View File

@ -0,0 +1 @@
../Cpu/cpuwalk.d

View File

@ -0,0 +1 @@
../Proc/crash.d

View File

@ -0,0 +1 @@
../Proc/creatbyproc.d

View File

@ -0,0 +1 @@
../Kernel/cswstat.d

View File

@ -0,0 +1 @@
../Proc/dappprof

View File

@ -0,0 +1 @@
../Proc/dapptrace

View File

@ -0,0 +1 @@
../dexplorer

View File

@ -0,0 +1 @@
../Disk/diskhits

View File

@ -0,0 +1 @@
../Cpu/dispqlen.d

View File

@ -0,0 +1 @@
../Kernel/dnlcps.d

View File

@ -0,0 +1 @@
../Kernel/dnlcsnoop.d

View File

@ -0,0 +1 @@
../Kernel/dnlcstat

View File

@ -0,0 +1 @@
../dtruss

View File

@ -0,0 +1 @@
../dvmstat

View File

@ -0,0 +1 @@
../errinfo

View File

@ -0,0 +1 @@
../execsnoop

View File

@ -0,0 +1 @@
../Proc/fddist

View File

@ -0,0 +1 @@
../Proc/filebyproc.d

View File

@ -0,0 +1 @@
../FS/fspaging.d

View File

@ -0,0 +1 @@
../FS/fsrw.d

View File

@ -0,0 +1 @@
../Misc/guess.d

View File

@ -0,0 +1 @@
../hotkernel

View File

@ -0,0 +1 @@
../Disk/hotspot.d

View File

@ -0,0 +1 @@
../hotuser

View File

@ -0,0 +1 @@
../Apps/httpdstat.d

View File

@ -0,0 +1 @@
../Net/icmpstat.d

View File

@ -0,0 +1 @@
../Cpu/intbycpu.d

View File

@ -0,0 +1 @@
../Cpu/intoncpu.d

View File

@ -0,0 +1 @@
../Cpu/inttimes.d

View File

@ -0,0 +1 @@
../Disk/iofile.d

View File

@ -0,0 +1 @@
../Disk/iofileb.d

View File

@ -0,0 +1 @@
../iopattern

View File

@ -0,0 +1 @@
../Disk/iopending

View File

@ -0,0 +1 @@
../iosnoop

View File

@ -0,0 +1 @@
../iotop

View File

@ -0,0 +1 @@
../Java/j_calldist.d

View File

@ -0,0 +1 @@
../Java/j_calls.d

View File

@ -0,0 +1 @@
../Java/j_calltime.d

View File

@ -0,0 +1 @@
../Java/j_classflow.d

View File

@ -0,0 +1 @@
../Java/j_cpudist.d

View File

@ -0,0 +1 @@
../Java/j_cputime.d

View File

@ -0,0 +1 @@
../Java/j_events.d

View File

@ -0,0 +1 @@
../Java/j_flow.d

View File

@ -0,0 +1 @@
../Java/j_flowtime.d

View File

@ -0,0 +1 @@
../Java/j_methodcalls.d

View File

@ -0,0 +1 @@
../Java/j_objnew.d

View File

@ -0,0 +1 @@
../Java/j_package.d

View File

@ -0,0 +1 @@
../Java/j_profile.d

View File

@ -0,0 +1 @@
../Java/j_stat.d

View File

@ -0,0 +1 @@
../Java/j_syscalls.d

View File

@ -0,0 +1 @@
../Java/j_syscolors.d

View File

@ -0,0 +1 @@
../Java/j_thread.d

View File

@ -0,0 +1 @@
../Java/j_who.d

View File

@ -0,0 +1 @@
../JavaScript/js_calldist.d

View File

@ -0,0 +1 @@
../JavaScript/js_calls.d

View File

@ -0,0 +1 @@
../JavaScript/js_calltime.d

View File

@ -0,0 +1 @@
../JavaScript/js_cpudist.d

View File

@ -0,0 +1 @@
../JavaScript/js_cputime.d

View File

@ -0,0 +1 @@
../JavaScript/js_execs.d

View File

@ -0,0 +1 @@
../JavaScript/js_flow.d

View File

@ -0,0 +1 @@
../JavaScript/js_flowinfo.d

View File

@ -0,0 +1 @@
../JavaScript/js_flowtime.d

View File

@ -0,0 +1 @@
../JavaScript/js_objcpu.d

View File

@ -0,0 +1 @@
../JavaScript/js_objgc.d

View File

@ -0,0 +1 @@
../JavaScript/js_objnew.d

View File

@ -0,0 +1 @@
../JavaScript/js_stat.d

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