From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: event notification Date: Mon, 8 Mar 2010 11:47:29 -0500 Message-ID: <20100308164727.GA4568@phenom.dumpdata.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="d6Gm4EdcadzBjdND" Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: ravi kerur Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --d6Gm4EdcadzBjdND Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sat, Mar 06, 2010 at 07:12:02PM -0800, ravi kerur wrote: > Hi, > > Is there a mechanism available in Xen such that a kernel module in dom0 can > register to it and when a VM(domU) is installed or deleted or suspend or > resumed kernel module in domU can send notification to its counterpart in > dom0. I have looked into xenbus mechanism used by PV drivers and it won't > work for us. Inputs appreciated. You can listen on udev events and see when a vif device has been added. Also you can add pieces to the dom0 kernel to send uevents when a device is suspended and do something. Attached is a simple program to listen to all uevents.. > > Thanks > -RK > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel --d6Gm4EdcadzBjdND Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="listen.c" #include #include #include #include #define MAX_PAYLOAD 1024 /* maximum payload size */ struct sockaddr_nl src_addr; int sock_fd; static char buff[MAX_PAYLOAD]; ssize_t buflen; int main () { sock_fd = socket (PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); memset (&src_addr, 0, sizeof (src_addr)); src_addr.nl_family = AF_NETLINK; src_addr.nl_pid = getpid (); /* self pid */ src_addr.nl_groups = 0xffffffff; printf ("Listen..\n"); bind (sock_fd, (struct sockaddr *) &src_addr, sizeof (src_addr)); printf ("Receiving..\n"); while (1) { buflen = recv (sock_fd, &buff, sizeof (buff), 0); printf ("Got data: %d\n", buflen); int i, bufpos; char *key; for (i = 0, bufpos = 0; (bufpos < buflen) && i < MAX_PAYLOAD; i++) { key = &buff[bufpos]; printf ("[%s]\n", key); bufpos += strlen (key) + 1; } memset (&buff, 0, MAX_PAYLOAD); } /* Close Netlink Socket */ close (sock_fd); return 0; } --d6Gm4EdcadzBjdND Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --d6Gm4EdcadzBjdND--