Module Name: src Committed By: pooka Date: Thu Mar 13 20:55:26 UTC 2014
Modified Files: src/sys/rump/net/lib/libvirtif: if_virt.c virtif_user.c virtif_user.h Log Message: allow VIF_DYING() implementation to protest To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/rump/net/lib/libvirtif/if_virt.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/net/lib/libvirtif/virtif_user.c \ src/sys/rump/net/lib/libvirtif/virtif_user.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/net/lib/libvirtif/if_virt.c diff -u src/sys/rump/net/lib/libvirtif/if_virt.c:1.41 src/sys/rump/net/lib/libvirtif/if_virt.c:1.42 --- src/sys/rump/net/lib/libvirtif/if_virt.c:1.41 Thu Mar 13 18:14:13 2014 +++ src/sys/rump/net/lib/libvirtif/if_virt.c Thu Mar 13 20:55:26 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: if_virt.c,v 1.41 2014/03/13 18:14:13 pooka Exp $ */ +/* $NetBSD: if_virt.c,v 1.42 2014/03/13 20:55:26 pooka Exp $ */ /* * Copyright (c) 2008, 2013 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_virt.c,v 1.41 2014/03/13 18:14:13 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_virt.c,v 1.42 2014/03/13 20:55:26 pooka Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -151,11 +151,13 @@ static int virtif_unclone(struct ifnet *ifp) { struct virtif_sc *sc = ifp->if_softc; + int rv; if (ifp->if_flags & IFF_UP) return EBUSY; - VIFHYPER_DYING(sc->sc_viu); + if ((rv = VIFHYPER_DYING(sc->sc_viu)) != 0) + return rv; virtif_stop(ifp, 1); if_down(ifp); Index: src/sys/rump/net/lib/libvirtif/virtif_user.c diff -u src/sys/rump/net/lib/libvirtif/virtif_user.c:1.1 src/sys/rump/net/lib/libvirtif/virtif_user.c:1.2 --- src/sys/rump/net/lib/libvirtif/virtif_user.c:1.1 Thu Mar 13 18:14:13 2014 +++ src/sys/rump/net/lib/libvirtif/virtif_user.c Thu Mar 13 20:55:26 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: virtif_user.c,v 1.1 2014/03/13 18:14:13 pooka Exp $ */ +/* $NetBSD: virtif_user.c,v 1.2 2014/03/13 20:55:26 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -251,7 +251,7 @@ VIFHYPER_SEND(struct virtif_user *viu, rumpuser_component_schedule(cookie); } -void +int VIFHYPER_DYING(struct virtif_user *viu) { void *cookie = rumpuser_component_unschedule(); @@ -259,11 +259,17 @@ VIFHYPER_DYING(struct virtif_user *viu) viu->viu_dying = 1; if (write(viu->viu_pipe[1], &viu->viu_dying, sizeof(viu->viu_dying)) == -1) { + /* + * this is here mostly to avoid a compiler warning + * about ignoring the return value of write() + */ fprintf(stderr, "%s: failed to signal thread\n", VIF_STRING(VIFHYPER_DYING)); } rumpuser_component_schedule(cookie); + + return 0; } void Index: src/sys/rump/net/lib/libvirtif/virtif_user.h diff -u src/sys/rump/net/lib/libvirtif/virtif_user.h:1.1 src/sys/rump/net/lib/libvirtif/virtif_user.h:1.2 --- src/sys/rump/net/lib/libvirtif/virtif_user.h:1.1 Thu Mar 13 18:14:13 2014 +++ src/sys/rump/net/lib/libvirtif/virtif_user.h Thu Mar 13 20:55:26 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: virtif_user.h,v 1.1 2014/03/13 18:14:13 pooka Exp $ */ +/* $NetBSD: virtif_user.h,v 1.2 2014/03/13 20:55:26 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -31,7 +31,7 @@ struct virtif_user; int VIFHYPER_CREATE(const char *, struct virtif_sc *, uint8_t *, struct virtif_user **); -void VIFHYPER_DYING(struct virtif_user *); +int VIFHYPER_DYING(struct virtif_user *); void VIFHYPER_DESTROY(struct virtif_user *); void VIFHYPER_SEND(struct virtif_user *, struct iovec *, size_t);