Date: Sun, 30 Oct 2011 11:43:13 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r226932 - in user/attilio/vmcontention: contrib/top etc/rc.d games/fortune/datfiles sbin/fdisk share/mk sys/dev/ath sys/dev/mfi sys/dev/syscons sys/dev/tws sys/dev/usb sys/geom/part sys... Message-ID: <201110301143.p9UBhDZd066634@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Sun Oct 30 11:43:12 2011 New Revision: 226932 URL: http://svn.freebsd.org/changeset/base/226932 Log: MFC Added: user/attilio/vmcontention/tools/regression/bin/sh/builtins/for1.0 - copied unchanged from r226931, head/tools/regression/bin/sh/builtins/for1.0 Modified: user/attilio/vmcontention/etc/rc.d/dhclient user/attilio/vmcontention/games/fortune/datfiles/fortunes user/attilio/vmcontention/sbin/fdisk/fdisk.c user/attilio/vmcontention/sys/dev/ath/if_ath.c user/attilio/vmcontention/sys/dev/ath/if_ath_debug.h user/attilio/vmcontention/sys/dev/mfi/mfivar.h user/attilio/vmcontention/sys/dev/syscons/scterm-teken.c user/attilio/vmcontention/sys/dev/tws/tws_services.c user/attilio/vmcontention/sys/dev/tws/tws_services.h user/attilio/vmcontention/sys/dev/usb/usb_device.c user/attilio/vmcontention/sys/dev/usb/usb_msctest.c user/attilio/vmcontention/sys/geom/part/g_part.c user/attilio/vmcontention/sys/kern/kern_sig.c user/attilio/vmcontention/sys/net80211/ieee80211_freebsd.c user/attilio/vmcontention/sys/vm/vm_contig.c user/attilio/vmcontention/sys/vm/vm_extern.h user/attilio/vmcontention/sys/vm/vm_phys.c user/attilio/vmcontention/sys/vm/vm_phys.h user/attilio/vmcontention/sys/vm/vm_reserv.c user/attilio/vmcontention/sys/vm/vm_reserv.h user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.birthday user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.freebsd user/attilio/vmcontention/usr.bin/sed/sed.1 user/attilio/vmcontention/usr.bin/who/who.1 user/attilio/vmcontention/usr.bin/who/who.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/contrib/bind9/ (props changed) user/attilio/vmcontention/contrib/binutils/ (props changed) user/attilio/vmcontention/contrib/bzip2/ (props changed) user/attilio/vmcontention/contrib/com_err/ (props changed) user/attilio/vmcontention/contrib/compiler-rt/ (props changed) user/attilio/vmcontention/contrib/dialog/ (props changed) user/attilio/vmcontention/contrib/ee/ (props changed) user/attilio/vmcontention/contrib/expat/ (props changed) user/attilio/vmcontention/contrib/file/ (props changed) user/attilio/vmcontention/contrib/gcc/ (props changed) user/attilio/vmcontention/contrib/gdb/ (props changed) user/attilio/vmcontention/contrib/gdtoa/ (props changed) user/attilio/vmcontention/contrib/gnu-sort/ (props changed) user/attilio/vmcontention/contrib/groff/ (props changed) user/attilio/vmcontention/contrib/less/ (props changed) user/attilio/vmcontention/contrib/libpcap/ (props changed) user/attilio/vmcontention/contrib/libstdc++/ (props changed) user/attilio/vmcontention/contrib/llvm/ (props changed) user/attilio/vmcontention/contrib/llvm/tools/clang/ (props changed) user/attilio/vmcontention/contrib/ncurses/ (props changed) user/attilio/vmcontention/contrib/netcat/ (props changed) user/attilio/vmcontention/contrib/ntp/ (props changed) user/attilio/vmcontention/contrib/one-true-awk/ (props changed) user/attilio/vmcontention/contrib/openbsm/ (props changed) user/attilio/vmcontention/contrib/openpam/ (props changed) user/attilio/vmcontention/contrib/openresolv/ (props changed) user/attilio/vmcontention/contrib/pf/ (props changed) user/attilio/vmcontention/contrib/sendmail/ (props changed) user/attilio/vmcontention/contrib/tcpdump/ (props changed) user/attilio/vmcontention/contrib/tcsh/ (props changed) user/attilio/vmcontention/contrib/tnftp/ (props changed) user/attilio/vmcontention/contrib/top/ (props changed) user/attilio/vmcontention/contrib/top/install-sh (props changed) user/attilio/vmcontention/contrib/tzcode/stdtime/ (props changed) user/attilio/vmcontention/contrib/tzcode/zic/ (props changed) user/attilio/vmcontention/contrib/tzdata/ (props changed) user/attilio/vmcontention/contrib/wpa/ (props changed) user/attilio/vmcontention/contrib/xz/ (props changed) user/attilio/vmcontention/crypto/heimdal/ (props changed) user/attilio/vmcontention/crypto/openssh/ (props changed) user/attilio/vmcontention/crypto/openssl/ (props changed) user/attilio/vmcontention/gnu/lib/ (props changed) user/attilio/vmcontention/gnu/usr.bin/binutils/ (props changed) user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/ (props changed) user/attilio/vmcontention/gnu/usr.bin/gdb/ (props changed) user/attilio/vmcontention/lib/libc/ (props changed) user/attilio/vmcontention/lib/libc/stdtime/ (props changed) user/attilio/vmcontention/lib/libutil/ (props changed) user/attilio/vmcontention/lib/libz/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/sbin/ipfw/ (props changed) user/attilio/vmcontention/share/mk/bsd.arch.inc.mk (props changed) user/attilio/vmcontention/share/zoneinfo/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/sys/amd64/include/xen/ (props changed) user/attilio/vmcontention/sys/boot/ (props changed) user/attilio/vmcontention/sys/boot/i386/efi/ (props changed) user/attilio/vmcontention/sys/boot/ia64/efi/ (props changed) user/attilio/vmcontention/sys/boot/ia64/ski/ (props changed) user/attilio/vmcontention/sys/boot/powerpc/boot1.chrp/ (props changed) user/attilio/vmcontention/sys/boot/powerpc/ofw/ (props changed) user/attilio/vmcontention/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/sys/conf/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/ (props changed) user/attilio/vmcontention/sys/contrib/octeon-sdk/ (props changed) user/attilio/vmcontention/sys/contrib/pf/ (props changed) user/attilio/vmcontention/sys/contrib/x86emu/ (props changed) user/attilio/vmcontention/usr.bin/calendar/ (props changed) user/attilio/vmcontention/usr.bin/csup/ (props changed) user/attilio/vmcontention/usr.bin/procstat/ (props changed) user/attilio/vmcontention/usr.sbin/ndiscvt/ (props changed) user/attilio/vmcontention/usr.sbin/rtadvctl/ (props changed) user/attilio/vmcontention/usr.sbin/rtadvd/ (props changed) user/attilio/vmcontention/usr.sbin/rtsold/ (props changed) user/attilio/vmcontention/usr.sbin/zic/ (props changed) Modified: user/attilio/vmcontention/etc/rc.d/dhclient ============================================================================== --- user/attilio/vmcontention/etc/rc.d/dhclient Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/etc/rc.d/dhclient Sun Oct 30 11:43:12 2011 (r226932) @@ -15,9 +15,21 @@ name="dhclient" rcvar= pidfile="/var/run/${name}.${ifn}.pid" start_precmd="dhclient_prestart" +stop_precmd="dhclient_pre_check" + +# rc_force check can only be done at the run_rc_command +# time, so we're testing it in the pre* hooks. +dhclient_pre_check() +{ + if [ -z "${rc_force}" ] && ! dhcpif $ifn; then + err 1 "'$ifn' is not a DHCP-enabled interface" + fi +} dhclient_prestart() { + dhclient_pre_check + # Interface-specific flags (see rc.subr for $flags setting) specific=$(get_if_var $ifn dhclient_flags_IF) if [ -z "$flags" -a -n "$specific" ]; then @@ -38,11 +50,8 @@ load_rc_config network if [ -z $ifn ] ; then # only complain if a command was specified but no interface if [ -n "$1" ] ; then - echo 1>&2 "$0: no interface specified" - return 1 + err 1 "$0: no interface specified" fi -elif [ -z "${rc_force}" ] && ! dhcpif $ifn; then - return 1 fi run_rc_command "$1" Modified: user/attilio/vmcontention/games/fortune/datfiles/fortunes ============================================================================== --- user/attilio/vmcontention/games/fortune/datfiles/fortunes Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/games/fortune/datfiles/fortunes Sun Oct 30 11:43:12 2011 (r226932) @@ -4942,25 +4942,37 @@ cats on the dinette table, etc. "That stop him?" "No, but it sure slowed him up." % - Youth is not a time of life, it is a state of mind; it is a temper of -the will, a quality of the imagination, a vigor of the emotions, a predominance -of courage over timidity, of the appetite for adventure over love of ease. - Nobody grows old by merely living a number of years; people grow -old only by deserting their ideals. Years wrinkle the skin, but to give up -enthusiasm wrinkles the soul. Worry, doubt, self-distrust, fear, and despair --- these are the long, long years that bow the head and turn the growing spirit -back to dust. - Whether seventy or sixteen, there is in every being's heart the love -of wonder, the sweet amazement at the stars and the starlike things and -thoughts, the undaunted challenge of events, the unfailing childlike appetite -for what next, and the joy and the game of life. - You are as young as your faith, as old as your doubt; as young as your -self-confidence, as old as your fear, as young as your hope, as old as your -despair. - So long as your heart receives messages of beauty, cheer, courage, -grandeur and power from the earth, from man, and from the Infinite, so long -you are young. - -- Samuel Ullman + Youth is not a time of life--it is a state of mind. It is not a +matter of red cheeks, red lips and supple knees. It is a temper of the +will; a quality of the imagination; a vigor of the emotions; it is a +freshness of the deep springs of life. Youth means a tempermental +predominance of courage over timidity, of the appetite for adventure +over a life of ease. This often exists in a man of fifty, more than in +a boy of twenty. Nobody grows old by merely living a number of years; +people grow old by deserting their ideals. + + Years may wrinkle the skin, but to give up enthusiasm wrinkles +the soul. Worry, doubt, self-distrust, fear and despair--these are the +long, long years that bow the head and turn the growing spirit back to +dust. + + Whether seventy or sixteen, there is in every being’s heart a +love of wonder; the sweet amazement at the stars and starlike things and +thoughts; the undaunted challenge of events, the unfailing childlike +appetite for what comes next, and the joy in the game of life. + + You are as young as your faith, as old as your doubt; as young +as your self-confidence, as old as your fear, as young as your hope, as +old as your despair. + + In the central place of your heart there is a wireless station. +So long as it receives messages of beauty, hope, cheer, grandeur, +courage, and power from the earth, from men and from the Infinite--so +long are you young. When the wires are all down and the central places +of your heart are covered with the snows of pessimism and the ice of +cynicism, then are you grown old, indeed! + -- Samuel Ullman, "Youth" (1934), as published in + The Silver Treasury, Prose and Verse for Every Mood % " " -- Charlie Chaplin Modified: user/attilio/vmcontention/sbin/fdisk/fdisk.c ============================================================================== --- user/attilio/vmcontention/sbin/fdisk/fdisk.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sbin/fdisk/fdisk.c Sun Oct 30 11:43:12 2011 (r226932) @@ -487,7 +487,7 @@ print_part(const struct dos_partition *p get_type(partp->dp_typ)); printf(" start %lu, size %lu (%ju Meg), flag %x%s\n", (u_long)partp->dp_start, - (u_long)partp->dp_size, + (u_long)partp->dp_size, (uintmax_t)part_mb, partp->dp_flag, partp->dp_flag == ACTIVE ? " (active)" : ""); @@ -513,6 +513,8 @@ init_boot(void) if ((fdesc = open(fname, O_RDONLY)) == -1 || fstat(fdesc, &sb) == -1) err(1, "%s", fname); + if (sb.st_size == 0) + errx(1, "%s is empty, must not be.", fname); if ((mboot.bootinst_size = sb.st_size) % secsize != 0) errx(1, "%s: length must be a multiple of sector size", fname); if (mboot.bootinst != NULL) @@ -890,7 +892,7 @@ write_s0() dos_partition_enc(&mboot.bootinst[DOSPARTOFF + i * DOSPARTSIZE], &mboot.parts[i]); le16enc(&mboot.bootinst[DOSMAGICOFFSET], DOSMAGIC); - for(sector = 0; sector < mboot.bootinst_size / secsize; sector++) + for(sector = 0; sector < mboot.bootinst_size / secsize; sector++) if (write_disk(sector, &mboot.bootinst[sector * secsize]) == -1) { warn("can't write fdisk partition table"); @@ -1111,7 +1113,7 @@ str2sectors(const char *str) return NO_DISK_SECTORS; } - if (*end == 'K') + if (*end == 'K') val *= 1024UL / secsize; else if (*end == 'M') val *= 1024UL * 1024UL / secsize; Modified: user/attilio/vmcontention/sys/dev/ath/if_ath.c ============================================================================== --- user/attilio/vmcontention/sys/dev/ath/if_ath.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/ath/if_ath.c Sun Oct 30 11:43:12 2011 (r226932) @@ -3624,8 +3624,10 @@ rx_error: /* NB: bpf needs the mbuf length setup */ len = rs->rs_datalen; m->m_pkthdr.len = m->m_len = len; + bf->bf_m = NULL; ath_rx_tap(ifp, m, rs, tsf, nf); ieee80211_radiotap_rx_all(ic, m); + m_freem(m); } /* XXX pass MIC errors up for s/w reclaculation */ goto rx_next; Modified: user/attilio/vmcontention/sys/dev/ath/if_ath_debug.h ============================================================================== --- user/attilio/vmcontention/sys/dev/ath/if_ath_debug.h Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/ath/if_ath_debug.h Sun Oct 30 11:43:12 2011 (r226932) @@ -57,6 +57,11 @@ enum { ATH_DEBUG_TDMA = 0x00800000, /* TDMA processing */ ATH_DEBUG_TDMA_TIMER = 0x01000000, /* TDMA timer processing */ ATH_DEBUG_REGDOMAIN = 0x02000000, /* regulatory processing */ + ATH_DEBUG_SW_TX = 0x04000000, /* per-packet software TX */ + ATH_DEBUG_SW_TX_BAW = 0x08000000, /* BAW handling */ + ATH_DEBUG_SW_TX_CTRL = 0x10000000, /* queue control */ + ATH_DEBUG_SW_TX_AGGR = 0x20000000, /* aggregate TX */ + ATH_DEBUG_SW_TX_RETRIES = 0x40000000, /* software TX retries */ ATH_DEBUG_FATAL = 0x80000000, /* fatal errors */ ATH_DEBUG_ANY = 0xffffffff }; Modified: user/attilio/vmcontention/sys/dev/mfi/mfivar.h ============================================================================== --- user/attilio/vmcontention/sys/dev/mfi/mfivar.h Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/mfi/mfivar.h Sun Oct 30 11:43:12 2011 (r226932) @@ -352,12 +352,29 @@ mfi_dequeue_bio(struct mfi_softc *sc) return (bp); } +/* + * This is from the original scsi_extract_sense() in CAM. It's copied + * here because CAM now uses a non-inline version that follows more complex + * additions to the SPC spec, and we don't want to force a dependency on + * the CAM module for such a trivial action. + */ +static __inline void +mfi_extract_sense(struct scsi_sense_data_fixed *sense, + int *error_code, int *sense_key, int *asc, int *ascq) +{ + + *error_code = sense->error_code & SSD_ERRCODE; + *sense_key = sense->flags & SSD_KEY; + *asc = (sense->extra_len >= 5) ? sense->add_sense_code : 0; + *ascq = (sense->extra_len >= 6) ? sense->add_sense_code_qual : 0; +} + static __inline void mfi_print_sense(struct mfi_softc *sc, void *sense) { int error, key, asc, ascq; - scsi_extract_sense((struct scsi_sense_data *)sense, + mfi_extract_sense((struct scsi_sense_data_fixed *)sense, &error, &key, &asc, &ascq); device_printf(sc->mfi_dev, "sense error %d, sense_key %d, " "asc %d, ascq %d\n", error, key, asc, ascq); Modified: user/attilio/vmcontention/sys/dev/syscons/scterm-teken.c ============================================================================== --- user/attilio/vmcontention/sys/dev/syscons/scterm-teken.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/syscons/scterm-teken.c Sun Oct 30 11:43:12 2011 (r226932) @@ -424,10 +424,18 @@ static const struct unicp437 cp437table[ { 0x00b6, 0x14, 0x00 }, { 0x00b7, 0xfa, 0x00 }, { 0x00ba, 0xa7, 0x00 }, { 0x00bb, 0xaf, 0x00 }, { 0x00bc, 0xac, 0x00 }, { 0x00bd, 0xab, 0x00 }, - { 0x00bf, 0xa8, 0x00 }, { 0x00c4, 0x8e, 0x01 }, - { 0x00c6, 0x92, 0x00 }, { 0x00c7, 0x80, 0x00 }, - { 0x00c9, 0x90, 0x00 }, { 0x00d1, 0xa5, 0x00 }, - { 0x00d6, 0x99, 0x00 }, { 0x00dc, 0x9a, 0x00 }, + { 0x00bf, 0xa8, 0x00 }, { 0x00c0, 0x41, 0x00 }, + { 0x00c1, 0x41, 0x00 }, { 0x00c2, 0x41, 0x00 }, + { 0x00c4, 0x8e, 0x01 }, { 0x00c6, 0x92, 0x00 }, + { 0x00c7, 0x80, 0x00 }, { 0x00c8, 0x45, 0x00 }, + { 0x00c9, 0x90, 0x00 }, { 0x00ca, 0x45, 0x00 }, + { 0x00cb, 0x45, 0x00 }, { 0x00cc, 0x49, 0x00 }, + { 0x00cd, 0x49, 0x00 }, { 0x00ce, 0x49, 0x00 }, + { 0x00cf, 0x49, 0x00 }, { 0x00d1, 0xa5, 0x00 }, + { 0x00d2, 0x4f, 0x00 }, { 0x00d3, 0x4f, 0x00 }, + { 0x00d4, 0x4f, 0x00 }, { 0x00d6, 0x99, 0x00 }, + { 0x00d9, 0x55, 0x00 }, { 0x00da, 0x55, 0x00 }, + { 0x00db, 0x55, 0x00 }, { 0x00dc, 0x9a, 0x00 }, { 0x00df, 0xe1, 0x00 }, { 0x00e0, 0x85, 0x00 }, { 0x00e1, 0xa0, 0x00 }, { 0x00e2, 0x83, 0x00 }, { 0x00e4, 0x84, 0x00 }, { 0x00e5, 0x86, 0x00 }, @@ -442,6 +450,7 @@ static const struct unicp437 cp437table[ { 0x00f8, 0xed, 0x00 }, { 0x00f9, 0x97, 0x00 }, { 0x00fa, 0xa3, 0x00 }, { 0x00fb, 0x96, 0x00 }, { 0x00fc, 0x81, 0x00 }, { 0x00ff, 0x98, 0x00 }, + { 0x013f, 0x4c, 0x00 }, { 0x0140, 0x6c, 0x00 }, { 0x0192, 0x9f, 0x00 }, { 0x0393, 0xe2, 0x00 }, { 0x0398, 0xe9, 0x00 }, { 0x03a3, 0xe4, 0x00 }, { 0x03a6, 0xe8, 0x00 }, { 0x03a9, 0xea, 0x00 }, @@ -490,7 +499,8 @@ static const struct unicp437 cp437table[ { 0x2584, 0xdc, 0x00 }, { 0x2588, 0xdb, 0x00 }, { 0x258c, 0xdd, 0x00 }, { 0x2590, 0xde, 0x00 }, { 0x2591, 0xb0, 0x02 }, { 0x25a0, 0xfe, 0x00 }, - { 0x25ac, 0x16, 0x00 }, { 0x25b2, 0x1e, 0x00 }, + { 0x25ac, 0x16, 0x00 }, + { 0x25ae, 0xdb, 0x00 }, { 0x25b2, 0x1e, 0x00 }, { 0x25ba, 0x10, 0x00 }, { 0x25bc, 0x1f, 0x00 }, { 0x25c4, 0x11, 0x00 }, { 0x25cb, 0x09, 0x00 }, { 0x25d8, 0x08, 0x00 }, { 0x25d9, 0x0a, 0x00 }, Modified: user/attilio/vmcontention/sys/dev/tws/tws_services.c ============================================================================== --- user/attilio/vmcontention/sys/dev/tws/tws_services.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/tws/tws_services.c Sun Oct 30 11:43:12 2011 (r226932) @@ -53,7 +53,7 @@ struct tws_sense *tws_find_sense_from_mf -struct error_desc array[] = { +static struct error_desc array[] = { { "Cannot add sysctl tree node", 0x2000, ERROR, "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, { "Register window not available", 0x2001, ERROR, Modified: user/attilio/vmcontention/sys/dev/tws/tws_services.h ============================================================================== --- user/attilio/vmcontention/sys/dev/tws/tws_services.h Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/tws/tws_services.h Sun Oct 30 11:43:12 2011 (r226932) @@ -114,7 +114,6 @@ struct error_desc { char *error_str; }; -extern struct error_desc array[]; /* ----------- q services ------------- */ #define TWS_FREE_Q 0 Modified: user/attilio/vmcontention/sys/dev/usb/usb_device.c ============================================================================== --- user/attilio/vmcontention/sys/dev/usb/usb_device.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/usb/usb_device.c Sun Oct 30 11:43:12 2011 (r226932) @@ -1851,7 +1851,8 @@ repeat_set_config: } } if (set_config_failed == 0 && config_index == 0 && - usb_test_quirk(&uaa, UQ_MSC_NO_SYNC_CACHE) == 0) { + usb_test_quirk(&uaa, UQ_MSC_NO_SYNC_CACHE) == 0 && + usb_test_quirk(&uaa, UQ_MSC_NO_GETMAXLUN) == 0) { /* * Try to figure out if there are any MSC quirks we Modified: user/attilio/vmcontention/sys/dev/usb/usb_msctest.c ============================================================================== --- user/attilio/vmcontention/sys/dev/usb/usb_msctest.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/dev/usb/usb_msctest.c Sun Oct 30 11:43:12 2011 (r226932) @@ -603,6 +603,29 @@ usb_iface_is_cdrom(struct usb_device *ud return (is_cdrom); } +static uint8_t +usb_msc_get_max_lun(struct usb_device *udev, uint8_t iface_index) +{ + struct usb_device_request req; + usb_error_t err; + uint8_t buf = 0; + + + /* The Get Max Lun command is a class-specific request. */ + req.bmRequestType = UT_READ_CLASS_INTERFACE; + req.bRequest = 0xFE; /* GET_MAX_LUN */ + USETW(req.wValue, 0); + req.wIndex[0] = iface_index; + req.wIndex[1] = 0; + USETW(req.wLength, 1); + + err = usbd_do_request(udev, NULL, &req, &buf); + if (err) + buf = 0; + + return (buf); +} + usb_error_t usb_msc_auto_quirk(struct usb_device *udev, uint8_t iface_index) { @@ -622,6 +645,11 @@ usb_msc_auto_quirk(struct usb_device *ud */ usb_pause_mtx(NULL, hz); + if (usb_msc_get_max_lun(udev, iface_index) == 0) { + DPRINTF("Device has only got one LUN.\n"); + usbd_add_dynamic_quirk(udev, UQ_MSC_NO_GETMAXLUN); + } + is_no_direct = 1; for (timeout = 4; timeout; timeout--) { err = bbb_command_start(sc, DIR_IN, 0, sc->buffer, Modified: user/attilio/vmcontention/sys/geom/part/g_part.c ============================================================================== --- user/attilio/vmcontention/sys/geom/part/g_part.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/geom/part/g_part.c Sun Oct 30 11:43:12 2011 (r226932) @@ -451,6 +451,10 @@ g_part_parm_geom(struct gctl_req *req, c gctl_error(req, "%d %s '%s'", EINVAL, name, gname); return (EINVAL); } + if ((gp->flags & G_GEOM_WITHER) != 0) { + gctl_error(req, "%d %s", ENXIO, gname); + return (ENXIO); + } *v = gp; return (0); } Modified: user/attilio/vmcontention/sys/kern/kern_sig.c ============================================================================== --- user/attilio/vmcontention/sys/kern/kern_sig.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/kern/kern_sig.c Sun Oct 30 11:43:12 2011 (r226932) @@ -2058,7 +2058,7 @@ tdsendsignal(struct proc *p, struct thre */ mtx_lock(&ps->ps_mtx); if (SIGISMEMBER(ps->ps_sigignore, sig)) { - SDT_PROBE(proc, kernel, , signal_discard, ps, td, sig, 0, 0 ); + SDT_PROBE(proc, kernel, , signal_discard, td, p, sig, 0, 0 ); mtx_unlock(&ps->ps_mtx); if (ksi && (ksi->ksi_flags & KSI_INS)) Modified: user/attilio/vmcontention/sys/net80211/ieee80211_freebsd.c ============================================================================== --- user/attilio/vmcontention/sys/net80211/ieee80211_freebsd.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/net80211/ieee80211_freebsd.c Sun Oct 30 11:43:12 2011 (r226932) @@ -571,8 +571,8 @@ ieee80211_notify_replay_failure(struct i struct ifnet *ifp = vap->iv_ifp; IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO, wh->i_addr2, - "%s replay detected <rsc %ju, csc %ju, keyix %u rxkeyix %u>", - k->wk_cipher->ic_name, (intmax_t) rsc, + "%s replay detected tid %d <rsc %ju, csc %ju, keyix %u rxkeyix %u>", + tid, k->wk_cipher->ic_name, (intmax_t) rsc, (intmax_t) k->wk_keyrsc[tid], k->wk_keyix, k->wk_rxkeyix); Modified: user/attilio/vmcontention/sys/vm/vm_contig.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_contig.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/vm/vm_contig.c Sun Oct 30 11:43:12 2011 (r226932) @@ -335,12 +335,12 @@ contigmapping(vm_map_t map, vm_size_t si vm_offset_t kmem_alloc_contig(vm_map_t map, vm_size_t size, int flags, vm_paddr_t low, - vm_paddr_t high, unsigned long alignment, unsigned long boundary, + vm_paddr_t high, u_long alignment, vm_paddr_t boundary, vm_memattr_t memattr) { vm_offset_t ret; vm_page_t pages; - unsigned long npgs; + u_long npgs; int tries; size = round_page(size); Modified: user/attilio/vmcontention/sys/vm/vm_extern.h ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_extern.h Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/vm/vm_extern.h Sun Oct 30 11:43:12 2011 (r226932) @@ -44,8 +44,8 @@ vm_offset_t kmem_alloc(vm_map_t, vm_size vm_offset_t kmem_alloc_attr(vm_map_t map, vm_size_t size, int flags, vm_paddr_t low, vm_paddr_t high, vm_memattr_t memattr); vm_offset_t kmem_alloc_contig(vm_map_t map, vm_size_t size, int flags, - vm_paddr_t low, vm_paddr_t high, unsigned long alignment, - unsigned long boundary, vm_memattr_t memattr); + vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary, + vm_memattr_t memattr); vm_offset_t kmem_alloc_nofault(vm_map_t, vm_size_t); vm_offset_t kmem_alloc_nofault_space(vm_map_t, vm_size_t, int); vm_offset_t kmem_alloc_wait(vm_map_t, vm_size_t); Modified: user/attilio/vmcontention/sys/vm/vm_phys.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_phys.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/vm/vm_phys.c Sun Oct 30 11:43:12 2011 (r226932) @@ -490,26 +490,6 @@ vm_phys_alloc_freelist_pages(int flind, } /* - * Allocate physical memory from phys_avail[]. - */ -vm_paddr_t -vm_phys_bootstrap_alloc(vm_size_t size, unsigned long alignment) -{ - vm_paddr_t pa; - int i; - - size = round_page(size); - for (i = 0; phys_avail[i + 1] != 0; i += 2) { - if (phys_avail[i + 1] - phys_avail[i] < size) - continue; - pa = phys_avail[i]; - phys_avail[i] += size; - return (pa); - } - panic("vm_phys_bootstrap_alloc"); -} - -/* * Find the vm_page corresponding to the given physical address. */ vm_page_t @@ -554,7 +534,7 @@ vm_phys_free_pages(vm_page_t m, int orde { struct vm_freelist *fl; struct vm_phys_seg *seg; - vm_paddr_t pa, pa_buddy; + vm_paddr_t pa; vm_page_t m_buddy; KASSERT(m->order == VM_NFREEORDER, @@ -566,25 +546,26 @@ vm_phys_free_pages(vm_page_t m, int orde KASSERT(order < VM_NFREEORDER, ("vm_phys_free_pages: order %d is out of range", order)); mtx_assert(&vm_page_queue_free_mtx, MA_OWNED); - pa = VM_PAGE_TO_PHYS(m); seg = &vm_phys_segs[m->segind]; - while (order < VM_NFREEORDER - 1) { - pa_buddy = pa ^ (1 << (PAGE_SHIFT + order)); - if (pa_buddy < seg->start || - pa_buddy >= seg->end) - break; - m_buddy = &seg->first_page[atop(pa_buddy - seg->start)]; - if (m_buddy->order != order) - break; - fl = (*seg->free_queues)[m_buddy->pool]; - TAILQ_REMOVE(&fl[m_buddy->order].pl, m_buddy, pageq); - fl[m_buddy->order].lcnt--; - m_buddy->order = VM_NFREEORDER; - if (m_buddy->pool != m->pool) - vm_phys_set_pool(m->pool, m_buddy, order); - order++; - pa &= ~((1 << (PAGE_SHIFT + order)) - 1); - m = &seg->first_page[atop(pa - seg->start)]; + if (order < VM_NFREEORDER - 1) { + pa = VM_PAGE_TO_PHYS(m); + do { + pa ^= ((vm_paddr_t)1 << (PAGE_SHIFT + order)); + if (pa < seg->start || pa >= seg->end) + break; + m_buddy = &seg->first_page[atop(pa - seg->start)]; + if (m_buddy->order != order) + break; + fl = (*seg->free_queues)[m_buddy->pool]; + TAILQ_REMOVE(&fl[order].pl, m_buddy, pageq); + fl[order].lcnt--; + m_buddy->order = VM_NFREEORDER; + if (m_buddy->pool != m->pool) + vm_phys_set_pool(m->pool, m_buddy, order); + order++; + pa &= ~(((vm_paddr_t)1 << (PAGE_SHIFT + order)) - 1); + m = &seg->first_page[atop(pa - seg->start)]; + } while (order < VM_NFREEORDER - 1); } m->order = order; fl = (*seg->free_queues)[m->pool]; @@ -593,6 +574,47 @@ vm_phys_free_pages(vm_page_t m, int orde } /* + * Free a contiguous, arbitrarily sized set of physical pages. + * + * The free page queues must be locked. + */ +void +vm_phys_free_contig(vm_page_t m, u_long npages) +{ + u_int n; + int order; + + /* + * Avoid unnecessary coalescing by freeing the pages in the largest + * possible power-of-two-sized subsets. + */ + mtx_assert(&vm_page_queue_free_mtx, MA_OWNED); + for (;; npages -= n) { + /* + * Unsigned "min" is used here so that "order" is assigned + * "VM_NFREEORDER - 1" when "m"'s physical address is zero + * or the low-order bits of its physical address are zero + * because the size of a physical address exceeds the size of + * a long. + */ + order = min(ffsl(VM_PAGE_TO_PHYS(m) >> PAGE_SHIFT) - 1, + VM_NFREEORDER - 1); + n = 1 << order; + if (npages < n) + break; + vm_phys_free_pages(m, order); + m += n; + } + /* The residual "npages" is less than "1 << (VM_NFREEORDER - 1)". */ + for (; npages > 0; npages -= n) { + order = flsl(npages) - 1; + n = 1 << order; + vm_phys_free_pages(m, order); + m += n; + } +} + +/* * Set the pool for a contiguous, power of two-sized set of physical pages. */ void @@ -728,14 +750,15 @@ vm_phys_zero_pages_idle(void) * "alignment" and "boundary" must be a power of two. */ vm_page_t -vm_phys_alloc_contig(unsigned long npages, vm_paddr_t low, vm_paddr_t high, - unsigned long alignment, unsigned long boundary) +vm_phys_alloc_contig(u_long npages, vm_paddr_t low, vm_paddr_t high, + u_long alignment, vm_paddr_t boundary) { struct vm_freelist *fl; struct vm_phys_seg *seg; struct vnode *vp; vm_paddr_t pa, pa_last, size; vm_page_t deferred_vdrop_list, m, m_ret; + u_long npages_end; int domain, flind, i, oind, order, pind; #if VM_NDOMAIN > 1 @@ -848,13 +871,10 @@ done: deferred_vdrop_list = m; } } - for (; i < roundup2(npages, 1 << imin(oind, order)); i++) { - m = &m_ret[i]; - KASSERT(m->order == VM_NFREEORDER, - ("vm_phys_alloc_contig: page %p has unexpected order %d", - m, m->order)); - vm_phys_free_pages(m, 0); - } + /* Return excess pages to the free lists. */ + npages_end = roundup2(npages, 1 << imin(oind, order)); + if (npages < npages_end) + vm_phys_free_contig(&m_ret[npages], npages_end - npages); mtx_unlock(&vm_page_queue_free_mtx); while (deferred_vdrop_list != NULL) { vdrop((struct vnode *)deferred_vdrop_list->pageq.tqe_prev); Modified: user/attilio/vmcontention/sys/vm/vm_phys.h ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_phys.h Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/vm/vm_phys.h Sun Oct 30 11:43:12 2011 (r226932) @@ -50,12 +50,11 @@ struct mem_affinity { extern struct mem_affinity *mem_affinity; void vm_phys_add_page(vm_paddr_t pa); -vm_page_t vm_phys_alloc_contig(unsigned long npages, - vm_paddr_t low, vm_paddr_t high, - unsigned long alignment, unsigned long boundary); +vm_page_t vm_phys_alloc_contig(u_long npages, vm_paddr_t low, vm_paddr_t high, + u_long alignment, vm_paddr_t boundary); vm_page_t vm_phys_alloc_freelist_pages(int flind, int pool, int order); vm_page_t vm_phys_alloc_pages(int pool, int order); -vm_paddr_t vm_phys_bootstrap_alloc(vm_size_t size, unsigned long alignment); +void vm_phys_free_contig(vm_page_t m, u_long npages); void vm_phys_free_pages(vm_page_t m, int order); void vm_phys_init(void); void vm_phys_set_pool(int pool, vm_page_t m, int order); Modified: user/attilio/vmcontention/sys/vm/vm_reserv.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_reserv.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/vm/vm_reserv.c Sun Oct 30 11:43:12 2011 (r226932) @@ -616,7 +616,7 @@ vm_reserv_reclaim_inactive(void) */ boolean_t vm_reserv_reclaim_contig(vm_paddr_t size, vm_paddr_t low, vm_paddr_t high, - unsigned long alignment, unsigned long boundary) + u_long alignment, vm_paddr_t boundary) { vm_paddr_t pa, pa_length; vm_reserv_t rv; Modified: user/attilio/vmcontention/sys/vm/vm_reserv.h ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_reserv.h Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/sys/vm/vm_reserv.h Sun Oct 30 11:43:12 2011 (r226932) @@ -49,8 +49,7 @@ void vm_reserv_init(void); int vm_reserv_level_iffullpop(vm_page_t m); boolean_t vm_reserv_reactivate_page(vm_page_t m); boolean_t vm_reserv_reclaim_contig(vm_paddr_t size, vm_paddr_t low, - vm_paddr_t high, unsigned long alignment, - unsigned long boundary); + vm_paddr_t high, u_long alignment, vm_paddr_t boundary); boolean_t vm_reserv_reclaim_inactive(void); void vm_reserv_rename(vm_page_t m, vm_object_t new_object, vm_object_t old_object, vm_pindex_t old_object_offset); Copied: user/attilio/vmcontention/tools/regression/bin/sh/builtins/for1.0 (from r226931, head/tools/regression/bin/sh/builtins/for1.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmcontention/tools/regression/bin/sh/builtins/for1.0 Sun Oct 30 11:43:12 2011 (r226932, copy of r226931, head/tools/regression/bin/sh/builtins/for1.0) @@ -0,0 +1,4 @@ +# $FreeBSD$ + +false +for i in `false`; do exit 3; done Modified: user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.birthday ============================================================================== --- user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.birthday Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.birthday Sun Oct 30 11:43:12 2011 (r226932) @@ -42,6 +42,7 @@ 01/30 Franklin Delano Roosevelt born in Hyde Park, New York, 1882 01/31 Jackie Robinson born, 1919 02/03 Gertrude Stein born, 1874 +02/04 Ken Thompson, creator of unix, born, 1943 02/05 Alex Harvey (SAHB) is born in Glasgow, Scotland, 1935 02/06 King George VI of UK dies; his daughter becomes Elizabeth II, 1952 02/07 Sinclair Lewis born, 1885 @@ -68,6 +69,7 @@ 02/22 Pierre Jules Cesar Janssen born, 1838, found hydrogen in the sun 02/23 W.E.B. DuBois born, 1868 02/24 Winslow Homer born, 1836 +02/24 Steve Jobs born, 1955 02/25 George Harrison born in Liverpool, England, 1943 02/25 Renoir born, 1841 02/26 Dominique Francois Jean Arago born, 1786; @@ -212,7 +214,7 @@ 09/08 Richard ``the Lionheart'', king of England born in Oxford, 1157 09/08 Peter Sellers born in Southsea, England, 1925 09/09 Chinese Communist Party Chairman Mao Tse-Tung dies at age 82, 1976 -09/09 Dennis Ritchie born, 1941 +09/09 Dennis MacAlistair Ritchie, creater of C, born, 1941 09/12 Jesse Owens born, 1913 09/13 Walter Reed born, 1851 09/15 Agatha Christie born in Torquay, England, 1890 @@ -239,6 +241,8 @@ 10/02 Mohandas K. Gandhi born at Porbandar, Kathiawad, India, 1869 10/04 John V. Atanasoff born, 1903 10/05 Ray Kroc (founder of McDonald's) born, 1902 +10/05 Steve Jobs died at the age of 56, 2011 +10/12 Dennis MacAlistair Ritchie died at the age of 70, 2011 10/13 Lenny Bruce is born in New York City, 1925 10/13 Virgil (Publius Vergilius Maro) born near Mantua, Italy, 70 BC 10/14 Dwight David Eisenhower, 34th President of the United States, born in Modified: user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.freebsd ============================================================================== --- user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.freebsd Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.freebsd Sun Oct 30 11:43:12 2011 (r226932) @@ -109,6 +109,7 @@ 03/28 Sean C. Farley <scf@FreeBSD.org> born in Indianapolis, Indiana, United States, 1970 03/29 Thierry Thomas <thierry@FreeBSD.org> born in Luxeuil les Bains, France, 1961 03/30 Po-Chuan Hsieh <sunpoet@FreeBSD.org> born in Taipei, Taiwan, Republic of China, 1978 +03/31 First quarter status reports are due on 04/15 04/01 Matthew Jacob <mjacob@FreeBSD.org> born in San Francisco, California, United States, 1958 04/01 Bill Fenner <fenner@FreeBSD.org> born in Bellefonte, Pennsylvania, United States, 1971 04/01 Peter Edwards <peadar@FreeBSD.org> born in Dublin, Ireland, 1973 @@ -199,6 +200,7 @@ 06/29 Daniel Harris <dannyboy@FreeBSD.org> born in Lubbock, Texas, United States, 1985 06/29 Andrew Pantyukhin <sat@FreeBSD.org> born in Moscow, Russian Federation, 1985 06/30 Guido van Rooij <guido@FreeBSD.org> born in Best, Noord-Brabant, the Netherlands, 1965 +06/30 Second quarter status reports are due on 07/15 07/01 Matthew Dillon <dillon@apollo.backplane.net> born in San Francisco, California, United States, 1966 07/02 Mark Christopher Ovens <marko@FreeBSD.org> born in Preston, Lancashire, United Kingdom, 1958 07/02 Vasil Venelinov Dimov <vd@FreeBSD.org> born in Shumen, Bulgaria, 1982 @@ -282,6 +284,7 @@ 09/28 Alex Dupre <ale@FreeBSD.org> born in Milano, Italy, 1980 09/29 Matthew Hunt <mph@FreeBSD.org> born in Johnstown, Pennsylvania, United States, 1976 09/30 Hiten M. Pandya <hmp@FreeBSD.org> born in Dar-es-Salaam, Tanzania, East Africa, 1986 +09/30 Third quarter status reports are due on 10/15 10/02 Beat Gaetzi <beat@FreeBSD.org> born in Zurich, Switzerland, 1980 10/05 Hiroki Sato <hrs@FreeBSD.org> born in Yamagata, Japan, 1977 10/05 Chris Costello <chris@FreeBSD.org> born in Houston, Texas, United States, 1985 @@ -341,5 +344,6 @@ 12/28 Ade Lovett <ade@FreeBSD.org> born in London, England, 1969 12/28 Marius Strobl <marius@FreeBSD.org> born in Cham, Bavaria, Germany, 1978 12/31 Edwin Groothuis <edwin@FreeBSD.org> born in Geldrop, the Netherlands, 1970 +12/31 Fourth quarter status reports are due on 01/15 #endif /* !_calendar_freebsd_ */ Modified: user/attilio/vmcontention/usr.bin/sed/sed.1 ============================================================================== --- user/attilio/vmcontention/usr.bin/sed/sed.1 Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/usr.bin/sed/sed.1 Sun Oct 30 11:43:12 2011 (r226932) @@ -343,7 +343,7 @@ can be preceded by white space and can b The function can be preceded by white space. The terminating .Dq } -must be preceded by a newline or optional white space. +must be preceded by a newline, and may also be preceded by white space. .Pp .Bl -tag -width "XXXXXX" -compact .It [2addr] function-list Modified: user/attilio/vmcontention/usr.bin/who/who.1 ============================================================================== --- user/attilio/vmcontention/usr.bin/who/who.1 Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/usr.bin/who/who.1 Sun Oct 30 11:43:12 2011 (r226932) @@ -28,7 +28,7 @@ .\" @(#)who.1 8.2 (Berkeley) 12/30/93 .\" $FreeBSD$ .\" -.Dd May 8, 2002 +.Dd Oct 28, 2011 .Dt WHO 1 .Os .Sh NAME @@ -36,7 +36,7 @@ .Nd display who is on the system .Sh SYNOPSIS .Nm -.Op Fl HmqsTu +.Op Fl bHmqsTu .Op Cm am I .Op Ar file .Sh DESCRIPTION @@ -48,6 +48,8 @@ remote hostname if not local. .Pp The options are as follows: .Bl -tag -width indent +.It Fl b +Write the time and date of the last system reboot. .It Fl H Write column headings above the output. .It Fl m Modified: user/attilio/vmcontention/usr.bin/who/who.c ============================================================================== --- user/attilio/vmcontention/usr.bin/who/who.c Sun Oct 30 11:25:44 2011 (r226931) +++ user/attilio/vmcontention/usr.bin/who/who.c Sun Oct 30 11:43:12 2011 (r226932) @@ -48,14 +48,16 @@ __FBSDID("$FreeBSD$"); #include <utmpx.h> static void heading(void); +static void boottime(void); static void process_utmp(void); static void quick(void); -static void row(struct utmpx *); +static void row(const struct utmpx *); static int ttywidth(void); static void usage(void); static void whoami(void); static int Hflag; /* Write column headings */ +static int bflag; /* Show date of the last reboot */ static int mflag; /* Show info about current terminal */ static int qflag; /* "Quick" mode */ static int sflag; /* Show name, line, time */ @@ -69,7 +71,7 @@ main(int argc, char *argv[]) setlocale(LC_TIME, ""); - while ((ch = getopt(argc, argv, "HTmqsu")) != -1) { + while ((ch = getopt(argc, argv, "HTbmqsu")) != -1) { switch (ch) { case 'H': /* Write column headings */ Hflag = 1; @@ -77,6 +79,9 @@ main(int argc, char *argv[]) case 'T': /* Show terminal state */ Tflag = 1; break; + case 'b': /* Show date of the last reboot */ + bflag = 1; + break; case 'm': /* Show info about current terminal */ mflag = 1; break; @@ -121,6 +126,8 @@ main(int argc, char *argv[]) heading(); if (mflag) whoami(); + else if (bflag) + boottime(); else process_utmp(); } @@ -134,7 +141,7 @@ static void usage(void) { - fprintf(stderr, "usage: who [-HmqsTu] [am I] [file]\n"); + fprintf(stderr, "usage: who [-bHmqsTu] [am I] [file]\n"); exit(1); } @@ -145,14 +152,14 @@ heading(void) printf("%-16s ", "NAME"); if (Tflag) printf("S "); - printf("%-8s %-12s ", "LINE", "TIME"); + printf("%-12s %-12s ", "LINE", "TIME"); if (uflag) printf("IDLE "); printf("%-16s\n", "FROM"); } static void -row(struct utmpx *ut) +row(const struct utmpx *ut) { char buf[80], tty[PATH_MAX]; struct stat sb; @@ -178,7 +185,10 @@ row(struct utmpx *ut) printf("%-16s ", ut->ut_user); if (Tflag) printf("%c ", state); - printf("%-8s ", ut->ut_line); + if (ut->ut_type == BOOT_TIME) + printf("%-12s ", "system boot"); + else + printf("%-12s ", ut->ut_line); t = ut->ut_tv.tv_sec; tm = localtime(&t); strftime(buf, sizeof(buf), d_first ? "%e %b %R" : "%b %e %R", tm); @@ -225,6 +235,17 @@ process_utmp(void) } static void +boottime(void) +{ + struct utmpx u1, *u2; + + u1.ut_type = BOOT_TIME; + if ((u2 = getutxid(&u1)) == NULL) + return; + row(u2); +} + +static void quick(void) { struct utmpx *utx;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110301143.p9UBhDZd066634>