summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib')
-rw-r--r--usr/src/lib/Makefile741
-rw-r--r--usr/src/lib/libdladm/Makefile.com2
-rw-r--r--usr/src/lib/libdladm/common/libdlstat.c483
-rw-r--r--usr/src/lib/libdladm/common/libdlstat.h3
-rw-r--r--usr/src/lib/libdladm/common/mapfile-vers1
5 files changed, 386 insertions, 844 deletions
diff --git a/usr/src/lib/Makefile b/usr/src/lib/Makefile
index eee92a6d40..e1a3eef0fd 100644
--- a/usr/src/lib/Makefile
+++ b/usr/src/lib/Makefile
@@ -19,13 +19,15 @@
# CDDL HEADER END
#
+#
# Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2012 by Delphix. All rights reserved.
# Copyright 2015, Joyent, Inc.
# Copyright (c) 2013 Gary Mills
# Copyright 2014 Garrett D'Amore <garrett@damore.org>
-# Copyright 2014 Nexenta Systems, Inc. All rights reserved.
# Copyright (c) 2015 Gary Mills
+# Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+#
include ../Makefile.master
@@ -34,253 +36,254 @@ include ../Makefile.master
# Note also that a few extra libraries are kept in cmd source.
#
# Certain libraries are linked with, hence depend on, other libraries.
-#
-# Although we have historically used .WAIT to express dependencies, it
-# reduces the amount of parallelism and thus lengthens the time it
-# takes to build the libraries. Thus, we now require that any new
-# libraries explicitly call out their dependencies. Eventually, all
-# the library dependencies will be called out explicitly. See
-# "Library interdependencies" near the end of this file.
-#
-# Aside from explicit dependencies (and legacy .WAITs), all libraries
-# are built in parallel.
-#
+# Library dependencies are called out explicitly, see "Library
+# interdependencies" below.
.PARALLEL:
-SUBDIRS= \
- common .WAIT \
- ../cmd/sgs/libconv \
- ../cmd/sgs/libdl .WAIT
-
-SUBDIRS += \
- libc .WAIT \
- ../cmd/sgs/libelf .WAIT \
- c_synonyms \
- libmd \
- libmd5 \
- librsm \
- libmp .WAIT \
- libnsl \
- libsecdb .WAIT \
- librpcsvc \
- libsocket .WAIT \
- libsctp \
- libsip \
- libcommputil \
- libresolv \
- libresolv2 .WAIT \
- libresolv2_joy .WAIT \
- libw .WAIT \
- libintl .WAIT \
+# Build libc and its dependencies
+SUBDIRS= \
+ common \
+ ../cmd/sgs/libconv \
+ ../cmd/sgs/libdl \
+ libc \
+ .WAIT
+
+# Build libraries with lots of dependents
+SUBDIRS += \
+ libm \
+ libmd \
+ libmp \
+ libnsl \
+ libnvpair \
+ libsocket \
+ .WAIT
+
+# Build everything else. Aside from explicit dependencies, all libraries
+# are built in parallel.
+SUBDIRS += \
+ ../cmd/sendmail/libmilter \
+ ../cmd/sgs/libelf \
../cmd/sgs/librtld_db \
- libaio \
- libast \
- libdll \
- libcmd \
- libshell \
- libsum \
- librt \
- libadm \
- libctf \
- libbrand .WAIT \
- libzonecfg .WAIT \
- libdtrace \
- libdtrace_jni \
- libcurses \
- libtermcap \
- libgen \
- libgss \
- libpam \
- libuuid \
- libthread \
- libpthread .WAIT \
- libslp \
+ abi \
+ auditd_plugins \
+ brand \
+ c_synonyms \
+ cfgadm_plugins \
+ crypt_modules \
+ extendedFILE \
+ fm \
+ getloginx \
+ gss_mechs/mech_dh \
+ gss_mechs/mech_dummy \
+ gss_mechs/mech_krb5 \
+ gss_mechs/mech_spnego \
+ hal \
+ hbaapi \
+ krb5 \
+ libadm \
+ libads \
+ libadt_jni \
+ libadutils \
+ libaio \
+ libast \
+ libavl \
+ libbe \
+ libbrand \
libbsdmalloc \
- libdoor \
+ libbsm \
+ libbunyan \
+ libc_db \
+ libcfgadm \
+ libcmd \
+ libcmdutils \
+ libcommputil \
+ libcontract \
+ libcpc \
+ libcrypt \
+ libcryptoutil \
+ libctf \
+ libcurses \
+ libdevice \
+ libdevid \
libdevinfo \
+ libdhcpagent \
+ libdhcputil \
+ libdisasm \
+ libdiskmgt \
libdladm \
+ libdll \
libdlpi \
- libeti \
- libcrypt \
libdns_sd \
+ libdoor \
+ libdscfg \
+ libdtrace \
+ libdtrace_jni \
+ libdwarf \
libefi \
+ libelfsign \
+ libeti \
+ libexacct \
+ libexacct/demo \
+ libfakekernel \
+ libfcoe \
+ libfru \
+ libfruutils \
+ libfsmgt \
libfstyp \
- libwanboot \
- libwanbootutil \
- libcryptoutil \
+ libgen \
+ libgrubmgmt \
+ libgss \
+ libhotplug \
+ libidmap \
+ libidspace \
+ libilb \
+ libima \
+ libinetsvc \
libinetutil \
+ libinstzones \
+ libintl \
libipadm \
libipd \
+ libipmi \
libipmp \
+ libipp \
+ libipsecutil \
libiscsit \
libkmf \
+ libkrb5 \
libkstat \
libkvm \
+ libldap5 \
+ liblgrp \
liblm \
+ libm1 \
+ libmail \
libmalloc \
+ libmapid \
libmapmalloc \
+ libmd5 \
libmtmalloc \
+ libmvec \
+ libndmp \
+ libnisdb \
libnls \
+ libnsctl \
libnwam \
- libsmbios \
- libtecla \
- libumem \
- libnvpair .WAIT \
- libexacct \
- libsasl \
- libldap5 \
- libsldap .WAIT \
- libbsm \
- libsys \
- libsysevent \
- libnisdb \
+ libpam \
+ libpcidb \
+ libpctx \
+ libpicl \
+ libpicltree \
+ libpkg \
libpool \
libpp \
libproc \
libproject \
+ libpthread \
+ libraidcfg \
+ librcm \
+ librdc \
librename \
+ libreparse \
+ libresolv \
+ libresolv2 \
+ librestart \
+ librpcsvc \
+ librsm \
+ librstp \
+ librt \
+ libsasl \
+ libscf \
+ libsched \
+ libsctp \
+ libsec \
+ libsecdb \
libsendfile \
- nametoaddr \
- ncad_addr \
- hbaapi \
- smhba \
- sun_fc \
- sun_sas \
- gss_mechs/mech_krb5 .WAIT \
- libkrb5 .WAIT \
- krb5 .WAIT \
+ libshare \
+ libshell \
+ libsip \
+ libsldap \
+ libslp \
+ libsmartsshd \
libsmbfs \
- libfcoe \
+ libsmbios \
+ libsmedia \
+ libsqlite \
libsrpt \
libstmf \
libstmfproxy \
- libnsctl \
- libunistat \
- libdscfg \
- librdc \
- libinstzones \
- libpkg \
- libpcidb \
- libm1 \
- libm \
- libmvec \
- libvnd \
- libidspace \
- varpd \
- libbunyan \
- libdwarf
-
-SUBDIRS += \
- passwdutil \
- pam_modules \
- crypt_modules \
- libadt_jni \
- abi \
- auditd_plugins \
- libvolmgt \
- libdevice \
- libdevid \
- libc_db \
- libndmp \
- libsec \
- libtnfprobe \
+ libsum \
+ libsun_ima \
+ libsys \
+ libsysevent \
+ libtecla \
+ libtermcap \
+ libthread \
libtnf \
libtnfctl \
- libdhcpagent \
- libdhcputil \
- libxnet \
- libipsecutil \
- nsswitch \
+ libtnfprobe \
+ libtsnet \
+ libtsol \
+ libumem \
+ libunistat \
+ libuuid \
libuutil \
- libscf \
- libinetsvc \
- librestart \
- libsched \
- libelfsign \
- pkcs11 .WAIT \
- libpctx .WAIT \
- libcpc \
- getloginx \
- watchmalloc \
- extendedFILE \
- madv \
- mpss \
- libdisasm \
+ libvnd \
+ libvolmgt \
+ libvrrpadm \
+ libvscan \
+ libw \
+ libwanboot \
+ libwanbootutil \
libwrap \
libxcurses \
libxcurses2 \
+ libxnet \
libzdoor \
+ libzfs \
+ libzfs_core \
+ libzfs_jni \
+ libzonecfg \
libzoneinfo \
libzonestat \
- libsmartsshd \
- libtsnet \
- libtsol \
- gss_mechs/mech_spnego \
- gss_mechs/mech_dummy \
- gss_mechs/mech_dh \
- rpcsec_gss \
- libraidcfg .WAIT \
- librcm .WAIT \
- libcfgadm .WAIT \
- libpicl .WAIT \
- libpicltree .WAIT \
- raidcfg_plugins \
- cfgadm_plugins \
- libmail \
- libsmedia \
- libipp \
- libdiskmgt \
- liblgrp \
- libfsmgt \
- fm \
- libavl \
- libcmdutils \
- libcontract \
- ../cmd/sendmail/libmilter \
- sasl_plugins \
- udapl \
libzpool \
- libzfs_core \
- libzfs \
- libbe \
- libzfs_jni \
- libmapid \
- brand \
+ lvm \
+ madv \
+ mpapi \
+ mpss \
+ nametoaddr \
+ ncad_addr \
+ nsswitch \
+ pam_modules \
+ passwdutil \
+ pkcs11 \
policykit \
- hal \
- libshare \
- libsqlite \
- libidmap \
- libads \
- libadutils \
- libipmi \
- libexacct/demo \
- libvrrpadm \
- libvscan \
- libgrubmgmt \
- libfakekernel \
- smbsrv \
- libilb \
+ print \
+ pylibbe \
+ pysolaris \
+ pyzfs \
+ raidcfg_plugins \
+ rpcsec_gss \
+ sasl_plugins \
scsi \
- libima \
- libsun_ima \
- mpapi \
- librstp \
- libreparse \
- libhotplug \
- libfruutils .WAIT \
- libfru \
+ smbsrv \
+ smhba \
+ sun_fc \
+ sun_sas \
+ udapl \
+ varpd \
+ watchmalloc \
$($(MACH)_SUBDIRS)
i386_SUBDIRS= \
libfdisk \
libsaveargs
-sparc_SUBDIRS= .WAIT \
+sparc_SUBDIRS= \
efcode \
libds \
libdscp \
- libprtdiag .WAIT \
+ libprtdiag \
libprtdiag_psr \
libpri \
librsc \
@@ -289,21 +292,15 @@ sparc_SUBDIRS= .WAIT \
libtsalarm \
libv12n
-FM_sparc_DEPLIBS= libpri
-
-fm: \
- libexacct \
- libipmi \
- libzfs \
- scsi \
- $(FM_$(MACH)_DEPLIBS)
-
#
# Create a special version of $(SUBDIRS) with no .WAIT's, for use with the
# clean and clobber targets (for more information, see those targets, below).
#
NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=)
+DCSUBDIRS = \
+ lvm
+
MSGSUBDIRS= \
abi \
auditd_plugins \
@@ -320,33 +317,35 @@ MSGSUBDIRS= \
libcontract \
libcurses \
libdhcputil \
- libipsecutil \
libdiskmgt \
libdladm \
libdll \
libgrubmgmt \
libgss \
libidmap \
- libipmp \
libilb \
libinetutil \
libinstzones \
libipadm \
+ libipmp \
+ libipsecutil \
+ libldap5 \
libnsl \
libnwam \
libpam \
libpicl \
- libpool \
libpkg \
+ libpool \
libpp \
- libscf \
+ libreparse \
libsasl \
- libldap5 \
+ libscf \
libsecdb \
libshare \
libshell \
libsldap \
libslp \
+ libsmartsshd \
libsmbfs \
libsmedia \
libsum \
@@ -359,13 +358,13 @@ MSGSUBDIRS= \
libzfs \
libzonecfg \
libzdoor \
- libsmartsshd \
+ lvm \
madv \
mpss \
pam_modules \
+ pysolaris \
+ pyzfs \
rpcsec_gss \
- libreparse
-MSGSUBDIRS += \
$($(MACH)_MSGSUBDIRS)
sparc_MSGSUBDIRS= \
@@ -374,8 +373,12 @@ sparc_MSGSUBDIRS= \
i386_MSGSUBDIRS= libfdisk
-HDRSUBDIRS= \
+HDRSUBDIRS= \
+ ../cmd/sendmail/libmilter \
auditd_plugins \
+ fm \
+ hal \
+ hbaapi \
libads \
libast \
libbrand \
@@ -387,21 +390,20 @@ HDRSUBDIRS= \
libcommputil \
libcontract \
libcpc \
+ libcryptoutil \
libctf \
libcurses \
- libtermcap \
- libcryptoutil \
libdevice \
libdevid \
libdevinfo \
+ libdhcpagent \
+ libdhcputil \
+ libdisasm \
libdiskmgt \
libdwarf \
libdladm \
libdll \
libdlpi \
- libdhcpagent \
- libdhcputil \
- libdisasm \
libdns_sd \
libdscfg \
libdtrace \
@@ -409,29 +411,36 @@ HDRSUBDIRS= \
libelfsign \
libeti \
libfakekernel \
+ libfcoe \
libfru \
libfstyp \
libgen \
+ libgrubmgmt \
+ libidmap \
libidspace \
- libipadm \
- libipd \
- libipsecutil \
+ libilb \
+ libima \
libinetsvc \
libinetutil \
libinstzones \
+ libipadm \
+ libipd \
libipmi \
libipmp \
libipp \
+ libipsecutil \
libiscsit \
+ libkrb5 \
libkstat \
libkvm \
libmail \
+ libmapid \
libmd \
libmtmalloc \
libndmp \
- libnvpair \
libnsctl \
libnsl \
+ libnvpair \
libnwam \
libpam \
libpcidb \
@@ -445,38 +454,43 @@ HDRSUBDIRS= \
librcm \
librdc \
librename \
- libscf \
- libsip \
- libsmbios \
+ libreparse \
librestart \
librpcsvc \
librsm \
librstp \
libsasl \
+ libscf \
libsec \
+ libshare \
libshell \
+ libsip \
libslp \
+ libsmbfs \
+ libsmbios \
libsmedia \
libsocket \
libsqlite \
- libfcoe \
libsrpt \
libstmf \
libstmfproxy \
libsum \
+ libsun_ima \
libsysevent \
libtecla \
+ libtermcap \
libtnf \
libtnfctl \
libtnfprobe \
libtsnet \
libtsol \
- libvrrpadm \
- libvolmgt \
libumem \
libunistat \
libuutil \
libvnd \
+ libvolmgt \
+ libvrrpadm \
+ libvscan \
libwanboot \
libwanbootutil \
libwrap \
@@ -486,29 +500,15 @@ HDRSUBDIRS= \
libzfs_jni \
libzoneinfo \
libzonestat \
- hal \
- policykit \
- pkcs11 \
+ lvm \
+ mpapi \
passwdutil \
- ../cmd/sendmail/libmilter \
- fm \
- udapl \
- libmapid \
- libkrb5 \
- libsmbfs \
- libshare \
- libidmap \
- libvscan \
- libgrubmgmt \
- smbsrv \
- libilb \
+ pkcs11 \
+ policykit \
scsi \
- hbaapi \
+ smbsrv \
smhba \
- libima \
- libsun_ima \
- mpapi \
- libreparse \
+ udapl \
$($(MACH)_HDRSUBDIRS)
i386_HDRSUBDIRS= \
@@ -563,137 +563,160 @@ _msg: $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc
_dc: $(DCSUBDIRS:%=%-nodepend)
-#
-# Library interdependencies are called out explicitly here
-#
-auditd_plugins: libbsm libnsl libsecdb
-krb5: gss_mechs/mech_krb5
-gss_mechs/mech_krb5: libgss libnsl libsocket libresolv pkcs11
-gss_mechs/mech_spnego: gss_mechs/mech_krb5
+# Library interdependencies are called out explicitly here.
+../cmd/sgs/libconv: common
+../cmd/sgs/libdl: common
+libc: ../cmd/sgs/libconv ../cmd/sgs/libdl
+
+libm: libc
+libmd: libc
+libmp: libc
+libnsl: libc libmd libmp
+libnvpair: libc libnsl
+libsocket: libc libnsl
+
+basedeps: libc libm libmd libmp libnsl libnvpair libsocket
+basedeps := TARGET=install
+
+# The following dependencies don't need to be listed below as they are built
+# before everything else:
+# libc libm libmd libmp libnsl libnvpair libsocket
+abi: libctf libmapmalloc libproc
+auditd_plugins: libbsm libsecdb libgss libmtmalloc
+brand: libzonecfg libmapmalloc
+cfgadm_plugins: libdevice libdevinfo libhotplug librcm hbaapi libkstat libscf
+fm: libexacct libipmi libzfs scsi libdevinfo libdevid libcfgadm \
+ libcontract libsysevent ../cmd/sgs/libelf
+$(SPARC_BLD)fm: libpri
+gss_mechs/mech_dh: libgss
+gss_mechs/mech_dummy: libgss
+gss_mechs/mech_krb5: libgss libresolv2 pkcs11 libkstat
+gss_mechs/mech_spnego: gss_mechs/mech_krb5
+krb5: gss_mechs/mech_krb5 libtecla libldap5
libadt_jni: libbsm
-libast: libsocket libm
-libadutils: libldap5 libresolv libsocket libnsl
-nsswitch: libadutils libidmap libresolv2_joy
-libbe: libzfs
-libbsm: libtsol
-libcmd: libsum libast libsocket libnsl
-libcmdutils: libavl libnvpair
-libcontract: libnvpair
-libcpc: libdevinfo
+libadutils: libldap5 libresolv2
+libbe: libzfs libinstzones libuuid libgen libdevinfo libefi
+libbsm: libinetutil libscf libsecdb libtsol
+libbunyan: libnvpair
+libcfgadm: libdevinfo
+libcmd: libsum libast
+libcmdutils: libavl
+libcpc: libpctx
+libcrypt: libgen
+libctf: libdwarf
libdevid: libdevinfo
-libdevinfo: libnvpair libsec
-libdhcpagent: libsocket libdhcputil libuuid libdlpi libcontract
-libdhcputil: libnsl libgen libinetutil libdlpi
-libdladm: libdevinfo libinetutil libsocket libscf librcm libnvpair \
- libexacct libnsl libkstat libcurses varpd
-libdevice: libnvpair
+libdevinfo: libsec libgen
+libdhcpagent: libdhcputil libuuid libdlpi libcontract
+libdhcputil: libgen libinetutil libdlpi
+libdiskmgt: libdevid libdevinfo libadm libefi libkstat libsysevent
+$(INTEL_BLD)libdiskmgt: libfdisk
+libdladm: libdevinfo libinetutil libscf librcm libexacct libkstat \
+ libpool varpd
libdll: libast
libdlpi: libinetutil libdladm
libds: libsysevent
-libdscfg: libnsctl libunistat libsocket libnsl
+libdscfg: libnsctl libunistat libadm
libdtrace: libproc libgen libctf libmapmalloc
libdtrace_jni: libuutil libdtrace
libefi: libuuid
+libelfsign: libcryptoutil libkmf ../cmd/sgs/libelf
+libeti: libcurses
+libexacct/demo: libexacct libproject
+libfakekernel: libumem libcryptoutil
libfcoe: libdladm
-libfstyp: libnvpair
-libelfsign: libcryptoutil libkmf
-libidmap: libadutils libldap5 libavl libsldap libuutil
-libipadm: libnsl libinetutil libsocket libdlpi libnvpair libdhcpagent \
- libdladm libsecdb
-libiscsit: libc libnvpair libstmf libuuid libnsl
-libkmf: libcryptoutil pkcs11
-libm: libc
-libm1: libc libm
-libmvec: libc libm
-libnsl: libmd5
-libmapid: libresolv
-libnisdb: libnsl libldap5
-librcm: libnvpair
-librdc: libsocket libnsl libnsctl libunistat libdscfg
-libuuid: libdlpi
-libinetutil: libsocket
-libipsecutil: libtecla libsocket
+libfru: libfruutils
+libfsmgt: libkstat
+libgrubmgmt: libdevinfo libzfs libfstyp libefi
+$(INTEL_BLD)libgrubmgmt: libfdisk
+libidmap: libavl libuutil
+libidspace: libumem
+libinetsvc: libscf
libinstzones: libzonecfg libcontract
-libpkg: libwanboot libscf libadm
+libipadm: libinetutil libdlpi libdhcpagent libdladm libsecdb
+libipmp: libinetutil
+libipsecutil: libtecla libtsol
+libiscsit: libstmf libuuid
+libkmf: libcryptoutil pkcs11
+libkvm: ../cmd/sgs/libelf
+libldap5: libsasl
+libmapid: libresolv2 libscf
+libndmp: libscf
+libnisdb: libldap5
libnwam: libscf libbsm libdladm
-libsecdb: libnsl
-libsasl: libgss libsocket pkcs11 libmd
-sasl_plugins: pkcs11 libgss libsocket libsasl
-libsctp: libsocket
-libshell: libast libcmd libdll libsocket libsecdb libm
-libsip: libmd5
-libsmbfs: libcmdutils libsocket libnsl libkrb5 libsec libidmap
-libsocket: libnsl
-libstmfproxy: libstmf libsocket libnsl libpthread
-libsum: libast
-libsysevent: libsecdb libnvpair
-libldap5: libsasl libsocket libnsl libmd
-libsldap: libldap5 libtsol libnsl libc libscf libresolv
-libpool: libnvpair libexacct
+libpcp: libumem libdevinfo
+libpctx: libproc
+libpkg: libwanboot libscf libadm
+libpool: libscf libexacct
libpp: libast
-libzonecfg: libc libsocket libnsl libuuid libnvpair libsysevent libsec \
- libbrand libpool libscf
-libzdoor: libc libzonecfg libcontract
-libsmartsshd: libc libcontract
-libproc: ../cmd/sgs/librtld_db ../cmd/sgs/libelf libctf libsaveargs
+libproc: ../cmd/sgs/librtld_db ../cmd/sgs/libelf libctf
+$(INTEL_BLD)libproc: libsaveargs
libproject: libpool libproc libsecdb
-libtermcap: libcurses
-libtsnet: libnsl libtsol libsecdb
-libwrap: libnsl libsocket
-libwanboot: libnvpair libresolv libnsl libsocket libdevinfo libinetutil \
- libdhcputil
-libwanbootutil: libnsl
-pam_modules: libproject passwdutil smbsrv libtsnet
-libscf: libuutil libmd libgen libsmbios libnsl libnvpair
-libinetsvc: libscf
-librestart: libuutil libscf libpool libproject libsecdb libnvpair
+libprtdiag: libkstat
+libprtdiag_psr: libprtdiag
+libraidcfg: libdevinfo
+librdc: libnsctl libunistat libdscfg
+librestart: libuutil libscf libpool libproject libsecdb libsysevent
+libsasl: libgss pkcs11
libsaveargs: libdisasm
-../cmd/sgs/libdl: ../cmd/sgs/libconv
-../cmd/sgs/libelf: ../cmd/sgs/libconv
-passwdutil: libsldap
-pkcs11: libcryptoutil libmd
-# Adding libuuid or libdladm results in a circular dependancy
-print: libldap5
-udapl/udapl_tavor: udapl/libdat
-libzfs: libdevid libgen libnvpair libuutil \
- libadm libavl libefi libidmap libmd libzfs_core libm
-libzfs_core: libnvpair
-libzfs_jni: libdiskmgt libnvpair libzfs
-libzpool: libavl libumem libnvpair libcmdutils
+libscf: libuutil libgen libsmbios
libsec: libavl libidmap
-brand: libc libsocket
libshare: libscf libzfs libuuid libfsmgt libsecdb libumem libsmbfs
-libexacct/demo: libexacct libproject libsocket libnsl
+libshell: libast libcmd libdll libsecdb
+libsip: libmd5
+libsldap: libldap5 libscf
+libsmartsshd: libc libcontract
+libsmbfs: libkrb5 libsec libidmap pkcs11
+libsrpt: libstmf
+libstmf: libscf
+libstmfproxy: libstmf libpthread
+libsum: libast
+libsun_ima: libdevinfo libsysevent
+libsysevent: libsecdb
+libtecla: libcurses
+libtermcap: libcurses
+libtnfctl: ../cmd/sgs/libelf
libtsalarm: libpcp
-smbsrv: libsocket libnsl libmd libxnet libpthread librt \
- libshare libidmap pkcs11 libsqlite libcryptoutil \
- libreparse libcmdutils libresolv libsmbfs libuuid \
- libfakekernel libads
+libtsnet: libtsol libsecdb
+libtsol: libsecdb
+libuuid: libdlpi
libv12n: libds libuuid
-libvrrpadm: libsocket libdladm libscf
-libvscan: libscf
-libfru: libfruutils
-scsi: libnvpair libfru
-mpapi: libpthread libdevinfo libsysevent libnvpair
-sun_fc: libdevinfo libsysevent libnvpair
-libsun_ima: libdevinfo libsysevent libnsl
-sun_sas: libdevinfo libsysevent libnvpair libkstat libdevid
-libgrubmgmt: libdevinfo libzfs libfstyp
-libreparse: libnvpair
-libhotplug: libnvpair
-cfgadm_plugins: libhotplug
-libilb: libsocket
-libipmi: libm
-libprtdiag: libm
-libsqlite: libm
-libstmf: libm
-libvscan: libm
-libidspace: libumem
-libbunyan: libnvpair
-libctf: libdwarf
-
-
-$(INTEL_BUILD)libdiskmgt:libfdisk
+libvolmgt: libadm
+libvrrpadm: libdladm libscf
+libvscan: libscf libsecdb
+libwanboot: libresolv2 libdevinfo libinetutil libdhcputil
+libzdoor: libc libzonecfg libcontract
+libzfs: libdevid libgen libuutil libadm libavl libefi libidmap \
+ libumem libtsol libzfs_core
+libzfs_jni: libdiskmgt libzfs
+libzonecfg: libuuid libsysevent libsec libbrand libpool libscf libproc \
+ libuutil libbsm libsecdb
+libzonestat: libcmdutils libumem
+libzpool: libavl libumem libcmdutils libsysevent
+lvm: libadm libdevid libdevinfo libefi libgen libscf
+madv: libgen
+mpapi: libpthread libdevinfo libsysevent
+mpss: libgen
+nsswitch: libadutils libidmap libdns_sd libscf libldap5 libsldap \
+ libresolv2_joy
+pam_modules: libproject passwdutil smbsrv libtsnet libpam libbsm libsecdb
+passwdutil: libsldap
+pkcs11: libcryptoutil libgen libuuid
+policykit: libsecdb
+print: libldap5 libmd5 libsendfile
+pylibbe: libbe libzfs
+pysolaris: libsec libidmap
+pyzfs: libzfs
+raidcfg_plugins: libraidcfg librcm libcfgadm libpicl libpicltree
+rpcsec_gss: libgss
+sasl_plugins: pkcs11 libgss libsasl
+scsi: libfru libumem
+smbsrv: libxnet libpthread librt libshare libidmap pkcs11 libsqlite \
+ libcryptoutil libreparse libcmdutils libresolv2 libsmbfs \
+ libuuid libfakekernel libads libgss libldap5 krb5
+storage: libdevice libdevinfo libdevid
+sun_fc: libdevinfo libsysevent
+sun_sas: libdevinfo libsysevent libkstat libdevid
+udapl: libdevinfo libdladm
varpd: libavl libidspace libumem libnsl libnvpair libmd5 librename \
libbunyan libcmdutils
diff --git a/usr/src/lib/libdladm/Makefile.com b/usr/src/lib/libdladm/Makefile.com
index 1cb28706a7..f9270f9769 100644
--- a/usr/src/lib/libdladm/Makefile.com
+++ b/usr/src/lib/libdladm/Makefile.com
@@ -38,7 +38,7 @@ include ../../Makefile.rootfs
LIBS = $(DYNLIB) $(LINTLIB)
LDLIBS += -ldevinfo -lc -linetutil -lsocket -lscf -lrcm -lnvpair \
- -lexacct -lnsl -lkstat -lcurses -lpool -lvarpd
+ -lexacct -lnsl -lkstat -lpool -lvarpd
SRCDIR = ../common
$(LINTLIB) := SRCS = $(SRCDIR)/$(LINTSRC)
diff --git a/usr/src/lib/libdladm/common/libdlstat.c b/usr/src/lib/libdladm/common/libdlstat.c
index 264c5f179f..a4f9307bd7 100644
--- a/usr/src/lib/libdladm/common/libdlstat.c
+++ b/usr/src/lib/libdladm/common/libdlstat.c
@@ -23,6 +23,7 @@
* Use is subject to license terms.
*/
+#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
@@ -41,15 +42,6 @@
#include <libdlstat.h>
#include <libdlaggr.h>
-/*
- * x86 <sys/regs> ERR conflicts with <curses.h> ERR.
- * Include curses.h last.
- */
-#if defined(ERR)
-#undef ERR
-#endif
-#include <curses.h>
-
struct flowlist {
char flowname[MAXFLOWNAMELEN];
char linkname[MAXLINKNAMELEN];
@@ -62,487 +54,17 @@ struct flowlist {
pktsum_t diffstats;
};
-static int maxx, maxy, redraw = 0;
-static volatile uint_t handle_resize = 0, handle_break = 0;
-
pktsum_t totalstats;
struct flowlist *stattable = NULL;
-static int statentry = -1, maxstatentries = 0;
#define STATGROWSIZE 16
-/*
- * Search for flowlist entry in stattable which matches
- * the flowname and linkid. If no match is found, use
- * next available slot. If no slots are available,
- * reallocate table with more slots.
- *
- * Return: *flowlist of matching flow
- * NULL if realloc fails
- */
-
-static struct flowlist *
-findstat(const char *flowname, datalink_id_t linkid)
-{
- int match = 0;
- struct flowlist *flist;
-
- /* Look for match in the stattable */
- for (match = 0, flist = stattable;
- match <= statentry;
- match++, flist++) {
-
- if (flist == NULL)
- break;
- /* match the flowname */
- if (flowname != NULL) {
- if (strncmp(flowname, flist->flowname, MAXFLOWNAMELEN)
- == NULL)
- return (flist);
- /* match the linkid */
- } else {
- if (linkid == flist->linkid)
- return (flist);
- }
- }
-
- /*
- * No match found in the table. Store statistics in the next slot.
- * If necessary, make room for this entry.
- */
- statentry++;
- if ((maxstatentries == 0) || (maxstatentries == statentry)) {
- maxstatentries += STATGROWSIZE;
- stattable = realloc(stattable,
- maxstatentries * sizeof (struct flowlist));
- if (stattable == NULL) {
- perror("realloc");
- return (struct flowlist *)(NULL);
- }
- }
- flist = &stattable[statentry];
- bzero(flist, sizeof (struct flowlist));
-
- if (flowname != NULL)
- (void) strncpy(flist->flowname, flowname, MAXFLOWNAMELEN);
- flist->linkid = linkid;
- flist->fd = INT32_MAX;
-
- return (flist);
-}
-
-/*ARGSUSED*/
-static void
-print_flow_stats(dladm_handle_t handle, struct flowlist *flist)
-{
- struct flowlist *fcurr;
- double ikbs, okbs;
- double ipks, opks;
- double dlt;
- int fcount;
- static boolean_t first = B_TRUE;
-
- if (first) {
- first = B_FALSE;
- (void) printw("please wait...\n");
- return;
- }
-
- for (fcount = 0, fcurr = flist;
- fcount <= statentry;
- fcount++, fcurr++) {
- if (fcurr->flowname && fcurr->display) {
- dlt = (double)fcurr->diffstats.snaptime/(double)NANOSEC;
- ikbs = fcurr->diffstats.rbytes * 8 / dlt / 1024;
- okbs = fcurr->diffstats.obytes * 8 / dlt / 1024;
- ipks = fcurr->diffstats.ipackets / dlt;
- opks = fcurr->diffstats.opackets / dlt;
- (void) printw("%-15.15s", fcurr->flowname);
- (void) printw("%-10.10s", fcurr->linkname);
- (void) printw("%9.2f %9.2f %9.2f %9.2f ",
- ikbs, okbs, ipks, opks);
- (void) printw("\n");
- }
- }
-}
-
-/*ARGSUSED*/
-static int
-flow_kstats(dladm_handle_t handle, dladm_flow_attr_t *attr, void *arg)
-{
- kstat_ctl_t *kcp = (kstat_ctl_t *)arg;
- kstat_t *ksp;
- struct flowlist *flist;
- pktsum_t currstats, *prevstats, *diffstats;
-
- flist = findstat(attr->fa_flowname, attr->fa_linkid);
- if (flist == NULL)
- return (DLADM_WALK_CONTINUE);
-
- flist->display = B_FALSE;
- prevstats = &flist->prevstats;
- diffstats = &flist->diffstats;
-
- (void) dladm_datalink_id2info(handle, attr->fa_linkid, NULL, NULL,
- NULL, flist->linkname, sizeof (flist->linkname));
-
-
- /* lookup kstat entry */
- ksp = dladm_kstat_lookup(kcp, NULL, -1, attr->fa_flowname, "flow");
-
- if (ksp == NULL)
- return (DLADM_WALK_CONTINUE);
-
- /* read packet and byte stats */
- dladm_get_stats(kcp, ksp, &currstats);
-
- if (flist->ifspeed == 0)
- (void) dladm_kstat_value(ksp, "ifspeed", KSTAT_DATA_UINT64,
- &flist->ifspeed);
-
- if (flist->first) {
- flist->first = B_FALSE;
- } else {
- dladm_stats_diff(diffstats, &currstats, prevstats);
- if (diffstats->snaptime == 0)
- return (DLADM_WALK_CONTINUE);
- dladm_stats_total(&totalstats, diffstats, &totalstats);
- }
-
- bcopy(&currstats, prevstats, sizeof (pktsum_t));
- flist->display = B_TRUE;
-
- return (DLADM_WALK_CONTINUE);
-}
-
-/*ARGSUSED*/
-static void
-print_link_stats(dladm_handle_t handle, struct flowlist *flist)
-{
- struct flowlist *fcurr;
- double ikbs, okbs;
- double ipks, opks;
- double util;
- double dlt;
- int fcount;
- static boolean_t first = B_TRUE;
-
- if (first) {
- first = B_FALSE;
- (void) printw("please wait...\n");
- return;
- }
-
- for (fcount = 0, fcurr = flist;
- fcount <= statentry;
- fcount++, fcurr++) {
- if ((fcurr->linkid != DATALINK_INVALID_LINKID) &&
- fcurr->display) {
- dlt = (double)fcurr->diffstats.snaptime/(double)NANOSEC;
- ikbs = (double)fcurr->diffstats.rbytes * 8 / dlt / 1024;
- okbs = (double)fcurr->diffstats.obytes * 8 / dlt / 1024;
- ipks = (double)fcurr->diffstats.ipackets / dlt;
- opks = (double)fcurr->diffstats.opackets / dlt;
- (void) printw("%-10.10s", fcurr->linkname);
- (void) printw("%9.2f %9.2f %9.2f %9.2f ",
- ikbs, okbs, ipks, opks);
- if (fcurr->ifspeed != 0)
- util = ((ikbs + okbs) * 1024) *
- 100/ fcurr->ifspeed;
- else
- util = (double)0;
- (void) attron(A_BOLD);
- (void) printw(" %6.2f", util);
- (void) attroff(A_BOLD);
- (void) printw("\n");
- }
- }
-}
-
-/*
- * This function is called through the dladm_walk_datalink_id() walker and
- * calls the dladm_walk_flow() walker.
- */
-
-/*ARGSUSED*/
-static int
-link_flowstats(dladm_handle_t handle, datalink_id_t linkid, void *arg)
-{
- dladm_status_t status;
-
- status = dladm_walk_flow(flow_kstats, handle, linkid, arg, B_FALSE);
- if (status == DLADM_STATUS_OK)
- return (DLADM_WALK_CONTINUE);
- else
- return (DLADM_WALK_TERMINATE);
-}
-
-/*ARGSUSED*/
-static int
-link_kstats(dladm_handle_t handle, datalink_id_t linkid, void *arg)
-{
- kstat_ctl_t *kcp = (kstat_ctl_t *)arg;
- struct flowlist *flist;
- pktsum_t currstats, *prevstats, *diffstats;
- datalink_class_t class;
- kstat_t *ksp;
- char dnlink[MAXPATHLEN];
-
- /* find the flist entry */
- flist = findstat(NULL, linkid);
- flist->display = B_FALSE;
- if (flist != NULL) {
- prevstats = &flist->prevstats;
- diffstats = &flist->diffstats;
- } else {
- return (DLADM_WALK_CONTINUE);
- }
-
- if (dladm_datalink_id2info(handle, linkid, NULL, &class, NULL,
- flist->linkname, sizeof (flist->linkname)) != DLADM_STATUS_OK)
- return (DLADM_WALK_CONTINUE);
-
- if (flist->fd == INT32_MAX) {
- if (class == DATALINK_CLASS_PHYS) {
- (void) snprintf(dnlink, MAXPATHLEN, "/dev/net/%s",
- flist->linkname);
- if ((flist->fd = open(dnlink, O_RDWR)) < 0)
- return (DLADM_WALK_CONTINUE);
- } else {
- flist->fd = -1;
- }
- (void) kstat_chain_update(kcp);
- }
-
- /* lookup kstat entry */
- ksp = dladm_kstat_lookup(kcp, NULL, -1, flist->linkname, "net");
-
- if (ksp == NULL)
- return (DLADM_WALK_CONTINUE);
-
- /* read packet and byte stats */
- dladm_get_stats(kcp, ksp, &currstats);
-
- if (flist->ifspeed == 0)
- (void) dladm_kstat_value(ksp, "ifspeed", KSTAT_DATA_UINT64,
- &flist->ifspeed);
-
- if (flist->first) {
- flist->first = B_FALSE;
- } else {
- dladm_stats_diff(diffstats, &currstats, prevstats);
- if (diffstats->snaptime == 0)
- return (DLADM_WALK_CONTINUE);
- }
-
- bcopy(&currstats, prevstats, sizeof (*prevstats));
- flist->display = B_TRUE;
-
- return (DLADM_WALK_CONTINUE);
-}
-
-static void
-closedevnet()
-{
- int index = 0;
- struct flowlist *flist;
-
- /* Close all open /dev/net/ files */
-
- for (flist = stattable; index < maxstatentries; index++, flist++) {
- if (flist->linkid == DATALINK_INVALID_LINKID)
- break;
- if (flist->fd != -1 && flist->fd != INT32_MAX)
- (void) close(flist->fd);
- }
-}
-
-/*ARGSUSED*/
-static void
-sig_break(int s)
-{
- handle_break = 1;
-}
-
-/*ARGSUSED*/
-static void
-sig_resize(int s)
-{
- handle_resize = 1;
-}
-
-static void
-curses_init()
-{
- maxx = maxx; /* lint */
- maxy = maxy; /* lint */
-
- /* Install signal handlers */
- (void) signal(SIGINT, sig_break);
- (void) signal(SIGQUIT, sig_break);
- (void) signal(SIGTERM, sig_break);
- (void) signal(SIGWINCH, sig_resize);
-
- /* Initialize ncurses */
- (void) initscr();
- (void) cbreak();
- (void) noecho();
- (void) curs_set(0);
- timeout(0);
- getmaxyx(stdscr, maxy, maxx);
-}
-
-static void
-curses_fin()
-{
- (void) printw("\n");
- (void) curs_set(1);
- (void) nocbreak();
- (void) endwin();
-
- free(stattable);
-}
-
-static void
-stat_report(dladm_handle_t handle, kstat_ctl_t *kcp, datalink_id_t linkid,
- const char *flowname, int opt)
-{
-
- double dlt, ikbs, okbs, ipks, opks;
-
- struct flowlist *fstable = stattable;
-
- if ((opt != LINK_REPORT) && (opt != FLOW_REPORT))
- return;
-
- /* Handle window resizes */
- if (handle_resize) {
- (void) endwin();
- (void) initscr();
- (void) cbreak();
- (void) noecho();
- (void) curs_set(0);
- timeout(0);
- getmaxyx(stdscr, maxy, maxx);
- redraw = 1;
- handle_resize = 0;
- }
-
- /* Print title */
- (void) erase();
- (void) attron(A_BOLD);
- (void) move(0, 0);
- if (opt == FLOW_REPORT)
- (void) printw("%-15.15s", "Flow");
- (void) printw("%-10.10s", "Link");
- (void) printw("%9.9s %9.9s %9.9s %9.9s ",
- "iKb/s", "oKb/s", "iPk/s", "oPk/s");
- if (opt == LINK_REPORT)
- (void) printw(" %6.6s", "%Util");
- (void) printw("\n");
- (void) attroff(A_BOLD);
-
- (void) move(2, 0);
-
- /* Print stats for each link or flow */
- bzero(&totalstats, sizeof (totalstats));
- if (opt == LINK_REPORT) {
- /* Display all links */
- if (linkid == DATALINK_ALL_LINKID) {
- (void) dladm_walk_datalink_id(link_kstats, handle,
- (void *)kcp, DATALINK_CLASS_ALL,
- DATALINK_ANY_MEDIATYPE, DLADM_OPT_ACTIVE);
- /* Display 1 link */
- } else {
- (void) link_kstats(handle, linkid, kcp);
- }
- print_link_stats(handle, fstable);
-
- } else if (opt == FLOW_REPORT) {
- /* Display 1 flow */
- if (flowname != NULL) {
- dladm_flow_attr_t fattr;
- if (dladm_flow_info(handle, flowname, &fattr) !=
- DLADM_STATUS_OK)
- return;
- (void) flow_kstats(handle, &fattr, kcp);
- /* Display all flows on all links */
- } else if (linkid == DATALINK_ALL_LINKID) {
- (void) dladm_walk_datalink_id(link_flowstats, handle,
- (void *)kcp, DATALINK_CLASS_ALL,
- DATALINK_ANY_MEDIATYPE, DLADM_OPT_ACTIVE);
- /* Display all flows on a link */
- } else if (linkid != DATALINK_INVALID_LINKID) {
- (void) dladm_walk_flow(flow_kstats, handle, linkid, kcp,
- B_FALSE);
- }
- print_flow_stats(handle, fstable);
-
- /* Print totals */
- (void) attron(A_BOLD);
- dlt = (double)totalstats.snaptime / (double)NANOSEC;
- ikbs = totalstats.rbytes / dlt / 1024;
- okbs = totalstats.obytes / dlt / 1024;
- ipks = totalstats.ipackets / dlt;
- opks = totalstats.opackets / dlt;
- (void) printw("\n%-25.25s", "Totals");
- (void) printw("%9.2f %9.2f %9.2f %9.2f ",
- ikbs, okbs, ipks, opks);
- (void) attroff(A_BOLD);
- }
-
- if (redraw)
- (void) clearok(stdscr, 1);
-
- if (refresh() == ERR)
- return;
-
- if (redraw) {
- (void) clearok(stdscr, 0);
- redraw = 0;
- }
-}
-
/* Exported functions */
/*
- * Continuously display link or flow statstics using a libcurses
- * based display.
- */
-
-void
-dladm_continuous(dladm_handle_t handle, datalink_id_t linkid,
- const char *flowname, int interval, int opt)
-{
- kstat_ctl_t *kcp;
-
- if ((kcp = kstat_open()) == NULL) {
- warn("kstat open operation failed");
- return;
- }
-
- curses_init();
-
- for (;;) {
-
- if (handle_break)
- break;
-
- stat_report(handle, kcp, linkid, flowname, opt);
-
- (void) sleep(max(1, interval));
- }
-
- closedevnet();
- curses_fin();
- (void) kstat_close(kcp);
-}
-
-/*
* dladm_kstat_lookup() is a modified version of kstat_lookup which
* adds the class as a selector.
*/
-
kstat_t *
dladm_kstat_lookup(kstat_ctl_t *kcp, const char *module, int instance,
const char *name, const char *class)
@@ -2496,7 +2018,8 @@ done:
/*ARGSUSED*/
static boolean_t
i_dlstat_total_match(void *arg1, void *arg2)
-{ /* Always single entry for total */
+{
+ /* Always single entry for total */
return (B_TRUE);
}
diff --git a/usr/src/lib/libdladm/common/libdlstat.h b/usr/src/lib/libdladm/common/libdlstat.h
index 381dafe22d..c799723a91 100644
--- a/usr/src/lib/libdladm/common/libdlstat.h
+++ b/usr/src/lib/libdladm/common/libdlstat.h
@@ -261,9 +261,6 @@ typedef struct pktsum_s {
uint64_t oerrors;
} pktsum_t;
-extern void dladm_continuous(dladm_handle_t, datalink_id_t,
- const char *, int, int);
-
extern kstat_t *dladm_kstat_lookup(kstat_ctl_t *, const char *, int,
const char *, const char *);
extern void dladm_get_stats(kstat_ctl_t *, kstat_t *, pktsum_t *);
diff --git a/usr/src/lib/libdladm/common/mapfile-vers b/usr/src/lib/libdladm/common/mapfile-vers
index f2847cab55..589bbf5330 100644
--- a/usr/src/lib/libdladm/common/mapfile-vers
+++ b/usr/src/lib/libdladm/common/mapfile-vers
@@ -208,7 +208,6 @@ SYMBOL_VERSION SUNWprivate_1.1 {
dladm_parselink;
- dladm_continuous;
dladm_kstat_lookup;
dladm_get_stats;
dladm_kstat_value;