Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 19 Aug 2009 04:07:27 +0000 (21:07 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 19 Aug 2009 04:07:27 +0000 (21:07 -0700)
24 files changed:
Makefile.inc1
include/unistd.h
lib/libc/sys/Makefile.inc
lib/libc/sys/rmdir.2
lib/libc/sys/unlink.2
lib/libc/sys/unlinkat.2 [new file with mode: 0644]
lib/libc_r/uthread/Makefile.inc
lib/libc_r/uthread/uthread_unlinkat.c [new file with mode: 0644]
nrelease/Makefile
sys/conf/newvers.sh
sys/kern/init_sysent.c
sys/kern/syscalls.c
sys/kern/syscalls.master
sys/kern/vfs_syscalls.c
sys/sys/fcntl.h
sys/sys/syscall-hide.h
sys/sys/syscall.h
sys/sys/syscall.mk
sys/sys/sysproto.h
sys/sys/sysunion.h
test/amd64/Makefile
test/amd64/qemu.patch [new file with mode: 0644]
tools/gitrev.sh
usr.sbin/vnconfig/vnconfig.c

index 2076ac5..4577f69 100644 (file)
@@ -409,6 +409,7 @@ realquickworld: _obj _includes _libraries everything
 crossworld: _worldtmp _bootstrap-tools _obj _build-tools _cross-tools
 
 .ORDER: ${WMAKE_TGTS}
+.ORDER: _obj _includes
 
 #
 # installcheck
index 1735b98..8aa10bd 100644 (file)
@@ -362,6 +362,7 @@ int  tcsetpgrp(int, pid_t);
 char   *ttyname(int);
 int    ttyname_r(int, char *, size_t);
 int     unlink(const char *);
+int     unlinkat(int, const char *, int);
 ssize_t         write(int, const void *, size_t);
 
 /* 1003.2-1992 */
index 01f7699..5cafb36 100644 (file)
@@ -90,7 +90,8 @@ MAN+= _exit.2 accept.2 access.2 acct.2 adjtime.2 \
        sigstack.2 sigsuspend.2 socket.2 socketpair.2 stat.2 statfs.2 \
        statvfs.2 swapon.2 symlink.2 sync.2 sysarch.2 syscall.2 syslink.2 \
        truncate.2 tls.2 umask.2 umtx.2 undelete.2 \
-       unlink.2 utimes.2 utrace.2 upc_register.2 usched_set.2 uuidgen.2 \
+       unlink.2 unlinkat.2 utimes.2 utrace.2 upc_register.2 usched_set.2 \
+       uuidgen.2 \
        varsym.2 vfork.2 wait.2 write.2
 
 .if !defined(NO_P1003_1B)
index ce36cfc..ce6cafc 100644 (file)
@@ -33,7 +33,7 @@
 .\" $FreeBSD: src/lib/libc/sys/rmdir.2,v 1.5.2.5 2001/12/14 18:34:01 ru Exp $
 .\" $DragonFly: src/lib/libc/sys/rmdir.2,v 1.2 2003/06/17 04:26:47 dillon Exp $
 .\"
-.Dd June 4, 1993
+.Dd August 18, 2009
 .Dt RMDIR 2
 .Os
 .Sh NAME
@@ -98,7 +98,8 @@ points outside the process's allocated address space.
 .El
 .Sh SEE ALSO
 .Xr mkdir 2 ,
-.Xr unlink 2
+.Xr unlink 2 ,
+.Xr unlinkat 2
 .Sh HISTORY
 The
 .Fn rmdir
index 5cec372..9c4eb34 100644 (file)
@@ -33,7 +33,7 @@
 .\" $FreeBSD: src/lib/libc/sys/unlink.2,v 1.8.2.4 2001/12/14 18:34:02 ru Exp $
 .\" $DragonFly: src/lib/libc/sys/unlink.2,v 1.4 2007/04/26 17:35:03 swildner Exp $
 .\"
-.Dd June 4, 1993
+.Dd August 18, 2009
 .Dt UNLINK 2
 .Os
 .Sh NAME
@@ -108,7 +108,8 @@ points outside the process's allocated address space.
 .Xr close 2 ,
 .Xr link 2 ,
 .Xr rmdir 2 ,
-.Xr symlink 7
+.Xr symlink 7 ,
+.Xr unlinkat 2
 .Sh HISTORY
 An
 .Fn unlink
diff --git a/lib/libc/sys/unlinkat.2 b/lib/libc/sys/unlinkat.2
new file mode 100644 (file)
index 0000000..960b762
--- /dev/null
@@ -0,0 +1,113 @@
+.\" Copyright (c) 2009 The DragonFly Project.  All rights reserved.
+.\"
+.\" This code is derived from software contributed to The DragonFly Project
+.\" by Nicolas Thery <nthery@gmail.com>
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd August 18, 2009
+.Dt UNLINKAT 2
+.Os
+.Sh NAME
+.Nm unlinkat
+.Nd remove directory entry or directory file
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In fcntl.h
+.In unistd.h
+.Ft int
+.Fn unlinkat "int fd" "const char *path" "int flags"
+.Sh DESCRIPTION
+The
+.Fn unlinkat
+function
+operates as the
+.Fn unlink
+or
+.Fn rmdir
+functions depending on the value of
+.Fa flags .
+.Pp
+The values for the
+.Fa flags
+are constructed by a bitwise-inclusive OR of flags from the following list,
+defined in
+.In fcntl.h :
+.Bl -tag -width indent
+.It Dv AT_REMOVEDIR
+Remove a directory file instead of a directory entry.
+.El
+.Pp
+If
+.Fa path
+specifies a relative path the directory entry or directory file to delete is
+determined relative to the directory associated with the file descriptor
+.Fa fd
+instead of the current working directory.
+If
+.Fa fd
+is the special value
+.Dv AT_FDCWD
+the current working directory is used and the behavior is identical to a call to
+.Fn rmdir
+or
+.Fn unlink .
+.Sh RETURN VALUES
+.Rv -std unlinkat
+.Sh ERRORS
+The
+.Fn unlinkat
+function can fail with the same error codes as
+.Fn unlink
+and
+.Fn rmdir .
+In addition,
+.Fn unlinkat
+can fail with:
+.Bl -tag -width Er
+.It Bq Er EBADF
+.Fa fd
+is not a valid file descriptor.
+.It Bq Er ENOTDIR
+.Fa path
+is relative and
+.Fa fd
+does not point to a directory.
+.It Bq Er EINVAL
+.Fa flags
+contains unsupported flags.
+.El
+.Sh SEE ALSO
+.Xr rmdir 2 ,
+.Xr unlink 2
+.Sh HISTORY
+The
+.Fn unlinkat
+system call appeared in
+.Dx 2.3 .
index eebb177..f267fbf 100644 (file)
@@ -129,6 +129,7 @@ SRCS+= \
        uthread_switch_np.c \
        uthread_system.c \
        uthread_tcdrain.c \
+       uthread_unlinkat.c \
        uthread_vfork.c \
        uthread_wait.c \
        uthread_wait4.c \
diff --git a/lib/libc_r/uthread/uthread_unlinkat.c b/lib/libc_r/uthread/uthread_unlinkat.c
new file mode 100644 (file)
index 0000000..75f84db
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2009 The DragonFly Project.  All rights reserved.
+ * 
+ * This code is derived from software contributed to The DragonFly Project
+ * by Nicolas Thery <nthery@gmail.com>
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name of The DragonFly Project nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific, prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <unistd.h>
+#include <pthread.h>
+#include "pthread_private.h"
+
+int
+_unlinkat(int fd, const char *path, int flags)
+{
+       int             ret;
+
+       if ((ret = _FD_LOCK(fd, FD_READ, NULL)) == 0) {
+               ret = __sys_unlinkat(fd, path, flags);
+               _FD_UNLOCK(fd, FD_READ);
+       }
+       return (ret);
+}
+
+__strong_reference(_unlinkat, unlinkat);
index e0f8230..62379a2 100644 (file)
@@ -401,7 +401,7 @@ mklocatedb:
 mkiso:
        ( cd ${ISOROOT}; ${PKGBIN_MKISOFS} -b boot/cdboot -no-emul-boot \
                -R -J -o ${ISOFILE} \
-               -V DragonFly-`${.CURDIR}/../tools/gitrev.sh | cut -c -22` . )
+               -V "DragonFly `${.CURDIR}/../tools/gitrev.sh | cut -c -22`" . )
 
 
 mkimg:
index a94a3bb..49f97e4 100644 (file)
@@ -78,8 +78,14 @@ if [ -f ${SRCDIR}/sys/conf/subvers-${SHORTTAG} ]; then
     fi
 fi
 
+# obtain git commit name, like "v2.3.2.449.g84e97*"
+GITREV=$(${SRCDIR}/tools/gitrev.sh 2>/dev/null || true)
+if [ -n "$GITREV" ]; then
+       GITREV=" $GITREV"
+fi
+
 RELEASE="${REVISION}-${BRANCH}"
-VERSION="${TYPE} ${RELEASE}"
+VERSION="${TYPE} ${RELEASE}${GITREV}"
 
 if [ "X${PARAMFILE}" != "X" ]; then
        RELDATE=$(awk '/__DragonFly_version.*propagated to newvers/ {print $3}' \
index 65bfd12..8cba3a2 100644 (file)
@@ -541,4 +541,5 @@ struct sysent sysent[] = {
        { AS(fstatat_args), (sy_call_t *)sys_fstatat }, /* 505 = fstatat */
        { AS(fchmodat_args), (sy_call_t *)sys_fchmodat },       /* 506 = fchmodat */
        { AS(fchownat_args), (sy_call_t *)sys_fchownat },       /* 507 = fchownat */
+       { AS(unlinkat_args), (sy_call_t *)sys_unlinkat },       /* 508 = unlinkat */
 };
index e1fa422..2caa347 100644 (file)
@@ -515,4 +515,5 @@ const char *syscallnames[] = {
        "fstatat",                      /* 505 = fstatat */
        "fchmodat",                     /* 506 = fchmodat */
        "fchownat",                     /* 507 = fchownat */
+       "unlinkat",                     /* 508 = unlinkat */
 };
index 628a138..607ac4b 100644 (file)
                                        int flags); }
 507    STD     POSIX   { int fchownat(int fd, char *path, int uid, int gid, \
                                        int flags); }
+508    STD     POSIX   { int unlinkat(int fd, char *path, int flags); }
index 13f3830..5fcc497 100644 (file)
@@ -2237,6 +2237,33 @@ sys_unlink(struct unlink_args *uap)
        return (error);
 }
 
+
+/*
+ * unlinkat_args(int fd, char *path, int flags)
+ *
+ * Delete the file or directory entry pointed to by fd/path.
+ */
+int
+sys_unlinkat(struct unlinkat_args *uap)
+{
+       struct nlookupdata nd;
+       struct file *fp;
+       int error;
+
+       if (uap->flags & ~AT_REMOVEDIR)
+               return (EINVAL);
+
+       error = nlookup_init_at(&nd, &fp, uap->fd, uap->path, UIO_USERSPACE, 0);
+       if (error == 0) {
+               if (uap->flags & AT_REMOVEDIR)
+                       error = kern_rmdir(&nd);
+               else
+                       error = kern_unlink(&nd);
+       }
+       nlookup_done_at(&nd, fp);
+       return (error);
+}
+
 int
 kern_lseek(int fd, off_t offset, int whence, off_t *res)
 {
index a8919d8..0513020 100644 (file)
 #define AT_FDCWD               0xFFFAFDCD      /* invalid file descriptor */
 #define AT_SYMLINK_NOFOLLOW    1
 #define _AT_SYMLINK_MASK       1
+#define AT_REMOVEDIR           2
 
 /*
  * Constants used for fcntl(2)
index 6e83a94..dd87f6a 100644 (file)
@@ -338,3 +338,4 @@ HIDE_POSIX(openat)
 HIDE_POSIX(fstatat)
 HIDE_POSIX(fchmodat)
 HIDE_POSIX(fchownat)
+HIDE_POSIX(unlinkat)
index e641151..aee1f31 100644 (file)
 #define        SYS_fstatat     505
 #define        SYS_fchmodat    506
 #define        SYS_fchownat    507
-#define        SYS_MAXSYSCALL  508
+#define        SYS_unlinkat    508
+#define        SYS_MAXSYSCALL  509
index aee75a1..b87f94f 100644 (file)
@@ -289,4 +289,5 @@ MIASM =  \
        openat.o \
        fstatat.o \
        fchmodat.o \
-       fchownat.o
+       fchownat.o \
+       unlinkat.o
index 6f80bc7..4fc4cb6 100644 (file)
@@ -2196,6 +2196,14 @@ struct   fchownat_args {
        int     gid;    char gid_[PAD_(int)];
        int     flags;  char flags_[PAD_(int)];
 };
+struct unlinkat_args {
+#ifdef _KERNEL
+       struct sysmsg sysmsg;
+#endif
+       int     fd;     char fd_[PAD_(int)];
+       char *  path;   char path_[PAD_(char *)];
+       int     flags;  char flags_[PAD_(int)];
+};
 
 #ifdef COMPAT_43
 
@@ -2786,6 +2794,7 @@ int       sys_openat (struct openat_args *);
 int    sys_fstatat (struct fstatat_args *);
 int    sys_fchmodat (struct fchmodat_args *);
 int    sys_fchownat (struct fchownat_args *);
+int    sys_unlinkat (struct unlinkat_args *);
 
 #endif /* !_SYS_SYSPROTO_H_ */
 #undef PAD_
index 4d70eec..20baf78 100644 (file)
@@ -394,4 +394,5 @@ union sysunion {
        struct  fstatat_args fstatat;
        struct  fchmodat_args fchmodat;
        struct  fchownat_args fchownat;
+       struct  unlinkat_args unlinkat;
 };
index 972dca1..e3dc37a 100644 (file)
@@ -6,8 +6,8 @@
 
 # require it to be specified
 SRCDIR ?= ${.CURDIR}/../..
-QEMU ?= qemu-0.10.1
-ROOTSIZE ?= 512M
+QEMU ?= qemu-0.10.6
+ROOTSIZE ?= 2048M
 
 .if defined(WITHSDL)
 QEMU_SDL_OPT ?= --extra-cflags=-I/usr/pkg/include \
@@ -74,7 +74,6 @@ help:
 #
 clean: check
        rm -rf ${QEMUDIR}/${QEMU}.tar.gz ${QEMUDIR}/${QEMU} \
-               ${QEMUDIR}/${QEMU}-dragonfly.patch \
                ${QEMUDIR}/root.img ${QEMUDIR}/root
 
 # Build qemu for Intel 32 and 64 bit environments
@@ -89,14 +88,10 @@ qemu: checkq sdl
 .if !exists(${QEMUDIR}/${QEMU}.tar.gz)
        cd ${QEMUDIR} && \
            fetch http://download.savannah.gnu.org/releases/qemu/${QEMU}.tar.gz
-.endif
-.if !exists(${QEMUDIR}/${QEMU}-dragonfly.patch)
-       cd ${QEMUDIR} && \
-           fetch http://pkgbox.dragonflybsd.org/patches/${QEMU}-dragonfly.patch
 .endif
        rm -rf ${QEMUDIR}/${QEMU}
        cd ${QEMUDIR} && tar xvzpf ${QEMU}.tar.gz
-       cd ${QEMUDIR}/${QEMU} && patch -p1 < ${QEMUDIR}/${QEMU}-dragonfly.patch
+       cd ${QEMUDIR}/${QEMU} && patch -p1 < ${.CURDIR}/qemu.patch
        cd ${QEMUDIR}/${QEMU} &&  \
            ./configure --disable-gfx-check \
                        ${QEMU_SDL_OPT} \
@@ -105,8 +100,8 @@ qemu: checkq sdl
                        --disable-aio \
                        --disable-kvm \
                        --target-list=i386-softmmu,x86_64-softmmu
-       cd ${QEMUDIR}/${QEMU} && CCVER=gcc34 gmake
-       cd ${QEMUDIR}/${QEMU} && CCVER=gcc34 gmake install
+       cd ${QEMUDIR}/${QEMU} && gmake
+       cd ${QEMUDIR}/${QEMU} && gmake install
 
 # SDL dependancies
 #
diff --git a/test/amd64/qemu.patch b/test/amd64/qemu.patch
new file mode 100644 (file)
index 0000000..996d211
--- /dev/null
@@ -0,0 +1,105 @@
+diff --git a/block.c b/block.c
+index b68a8da..6ed24ad 100644
+--- a/block.c
++++ b/block.c
+@@ -35,8 +35,10 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
++#ifndef __DragonFly__
+ #include <sys/disk.h>
+ #endif
++#endif
+ #define SECTOR_BITS 9
+ #define SECTOR_SIZE (1 << SECTOR_BITS)
+diff --git a/configure b/configure
+index 6164241..3e206b2 100755
+--- a/configure
++++ b/configure
+@@ -228,6 +228,11 @@ if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
+     kqemu="yes"
+ fi
+ ;;
++DragonFly)
++bsd="yes"
++oss="yes"
++dragonfly="yes"
++;;
+ NetBSD)
+ bsd="yes"
+ audio_drv_list="oss"
+@@ -1317,6 +1322,10 @@ if test "$darwin" = "yes" ; then
+   echo "CONFIG_DARWIN=yes" >> $config_mak
+   echo "#define CONFIG_DARWIN 1" >> $config_h
+ fi
++if test "$dragonfly" = "yes" ; then
++  echo "CONFIG_DRAGONFLY=yes" >> $config_mak
++  echo "#define CONFIG_DRAGONFLY 1" >> $config_h
++fi
+ if test "$aix" = "yes" ; then
+   echo "CONFIG_AIX=yes" >> $config_mak
+diff --git a/cpu-exec.c b/cpu-exec.c
+index 7607e24..deb845d 100644
+--- a/cpu-exec.c
++++ b/cpu-exec.c
+@@ -1156,6 +1156,12 @@ static inline int handle_cpu_signal(unsigned long pc, unsigned long address,
+ # define EIP_sig(context)  (*((unsigned long*)&(context)->uc_mcontext->ss.eip))
+ # define TRAP_sig(context)    ((context)->uc_mcontext->es.trapno)
+ # define ERROR_sig(context)   ((context)->uc_mcontext->es.err)
++#elif defined (__DragonFly__)
++# include <ucontext.h>
++
++# define EIP_sig(context)  (*((unsigned long*)&(context)->uc_mcontext.mc_eip))
++# define TRAP_sig(context)    ((context)->uc_mcontext.mc_trapno)
++# define ERROR_sig(context)   ((context)->uc_mcontext.mc_err)
+ #else
+ # define EIP_sig(context)     ((context)->uc_mcontext.gregs[REG_EIP])
+ # define TRAP_sig(context)    ((context)->uc_mcontext.gregs[REG_TRAPNO])
+@@ -1166,7 +1172,7 @@ int cpu_signal_handler(int host_signum, void *pinfo,
+                        void *puc)
+ {
+     siginfo_t *info = pinfo;
+-    struct ucontext *uc = puc;
++    ucontext_t *uc = puc;
+     unsigned long pc;
+     int trapno;
+diff --git a/texi2pod.pl b/texi2pod.pl
+index 5d28a05..abca509 100755
+--- a/texi2pod.pl
++++ b/texi2pod.pl
+@@ -1,4 +1,4 @@
+-#! /usr/bin/perl -w
++#! /usr/bin/env perl -w
+ #   Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+diff --git a/usb-bsd.c b/usb-bsd.c
+index fa4093c..60e78d4 100644
+--- a/usb-bsd.c
++++ b/usb-bsd.c
+@@ -34,7 +34,11 @@
+ #undef USB_SPEED_LOW
+ #include <sys/ioctl.h>
++#ifdef __DragonFly__
++#include <bus/usb/usb.h>
++#else
+ #include <dev/usb/usb.h>
++#endif
+ #include <signal.h>
+ /* This value has maximum potential at 16.
+--- a/exec-all.h~      2009-08-17 01:32:59 +0200
++++ a/exec-all.h       2009-08-17 01:13:49 +0200
+@@ -35,7 +35,7 @@
+ typedef struct TranslationBlock TranslationBlock;
+ /* XXX: make safe guess about sizes */
+-#define MAX_OP_PER_INSTR 64
++#define MAX_OP_PER_INSTR 80
+ /* A Call op needs up to 6 + 2N parameters (N = number of arguments).  */
+ #define MAX_OPC_PARAM 10
+ #define OPC_BUF_SIZE 512
index 37fbd93..94ba59e 100755 (executable)
@@ -1,19 +1,26 @@
 #!/bin/sh
 
-if ! which git >/dev/null 2>&1 ||
+# We might be run during buildkernel/world, where PATH is
+# limited.  To reach git, we need to add the directories
+# git might be located in.  Not a very nice solution, but
+# it works well enough.
+PATH=$PATH:/usr/pkg/bin:/usr/local/bin
+
+srcdir=${1:-$(dirname $0)}
+
+[ -n "$srcdir" ] && cd "$srcdir"
+
+if ! git version >/dev/null 2>&1 ||
        ! cd "$(dirname "$0")" ||
        ! git rev-parse --git-dir >/dev/null 2>&1
 then
-       # XXX get version from newvers.sh?
-       echo "unknown"
        exit 0
 fi
 
-v=$(git describe --abbrev=4 HEAD 2>/dev/null || git rev-parse --short HEAD)
+v=$(git describe --abbrev=5 2>/dev/null || git rev-parse --short HEAD)
 git update-index -q --refresh
-[ -z "$(git diff-index --name-only HEAD --)" ] || v="$v-dirty"
-
-v=$(echo "$v" | sed -e 's/-/./g;s/^v//;')
+v=$(echo "$v" | sed -e 'y/-/./')
+[ -z "$(git diff-index --name-only HEAD --)" ] || v="$v*"
 
 echo "$v"
 exit 0
index 97c0a65..4e75518 100644 (file)
@@ -315,18 +315,8 @@ getinfo( const char *vname )
                }
                else {
                        if (ioctl(vd, VNIOCGET, &vnu) == -1) {
-                               if (errno != ENXIO) {
-                                       if (*vnu.vnu_file == '\0') {
-                                               fprintf(stdout,
-                                                   "vn%d: ioctl: can't access regular file\n",
-                                                   vnu.vnu_unit);
-                                               continue;
-                                       }
-                                       else {
-                                               close(vd);
-                                               err(1, "ioctl: %s", vname);
-                                       }
-                               }
+                               warn("vn%d: ioctl", i);
+                                       continue;
                        }
 
                        fprintf(stdout, "vn%d: ", vnu.vnu_unit);