diff options
Diffstat (limited to 'usr/src/lib')
-rw-r--r-- | usr/src/lib/Makefile | 741 | ||||
-rw-r--r-- | usr/src/lib/libdladm/Makefile.com | 2 | ||||
-rw-r--r-- | usr/src/lib/libdladm/common/libdlstat.c | 483 | ||||
-rw-r--r-- | usr/src/lib/libdladm/common/libdlstat.h | 3 | ||||
-rw-r--r-- | usr/src/lib/libdladm/common/mapfile-vers | 1 |
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; |