VKERNEL Pidfile patch

Chris Turner c.turner at 199technologies.org
Sun Jun 17 09:16:01 PDT 2007


Sascha Wildner wrote:
> 
> Uh, can you use diff -u please?
> 
oops.. hadn't had my coffee yet :) See attached.

as mentioned in the first post, this is a manually edited patch as
I've got another one outstanding on the vkernel.7 file for the
vk-shutdown..

(which I'll check for same diff -u issue)

Perhaps I should submit them as one - but trying to keep the features
separate..

Thanks,

- Chris

Index: share/man/man7/vkernel.7
===================================================================
RCS file: /var/local/apps/dcvs/src/share/man/man7/vkernel.7,v
retrieving revision 1.18
diff -u -r1.18 vkernel.7
--- share/man/man7/vkernel.7	14 Jun 2007 21:11:29 -0000	1.18
+++ share/man/man7/vkernel.7	17 Jun 2007 04:05:58 -0000
@@ -51,6 +51,7 @@
 .Op Fl i Ar file
 .Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
 .Op Fl m Ar size
+.Op Fl p Ar file
 .Op Fl r Ar file
 .Sh DESCRIPTION
 The
@@ -149,6 +150,9 @@
 and
 .Cm G
 are allowed.
+.It Fl p Ar file
+Specify a file in which to store the process ID. 
+A warning is issued if this file cannot be opened for writing.
 .It Fl r Ar file
 Specify a R/W disk image
 .Ar file
Index: sys/platform/vkernel/platform/init.c
===================================================================
RCS file: /var/local/apps/dcvs/src/sys/platform/vkernel/platform/init.c,v
retrieving revision 1.39
diff -u -r1.39 init.c
--- sys/platform/vkernel/platform/init.c	28 May 2007 05:26:29 -0000	1.39
+++ sys/platform/vkernel/platform/init.c	17 Jun 2007 14:00:15 -0000
@@ -107,6 +107,7 @@
 static void init_vkernel(void);
 static void init_disk(char *diskExp[], int diskFileNum, enum vkdisk_type type); 
 static void init_netif(char *netifExp[], int netifFileNum);
+static void writepid(char *path);
 static void usage(const char *ctl);
 
 static int save_ac;
@@ -123,13 +124,14 @@
 	char *diskFile[VKDISK_MAX];
 	char *cdFile[VKDISK_MAX];
 	char *suffix;
+	char *pidfile = NULL;
 	int netifFileNum = 0;
 	int diskFileNum = 0;
 	int cdFileNum = 0;
 	int c;
 	int i;
 	int n;
-
+	
 	save_ac = ac;
 	save_av = av;
 
@@ -138,7 +140,7 @@
 	 */
 	kernel_mem_readonly = 1;
 
-	while ((c = getopt(ac, av, "c:svm:r:e:i:I:U")) != -1) {
+	while ((c = getopt(ac, av, "c:svm:r:e:i:p:I:U")) != -1) {
 		switch(c) {
 		case 'e':
 			/*
@@ -200,12 +202,16 @@
 				}
 			}
 			break;
+		case 'p':
+			pidfile = optarg;	
+			break;
 		case 'U':
 			kernel_mem_readonly = 0;
 			break;
 		}
 	}
 
+	writepid(pidfile);
 	cpu_disable_intr();
 	init_sys_memory(memImageFile);
 	init_kern_memory();
@@ -1039,6 +1045,24 @@
 
 static
 void
+writepid(char *path)
+{
+	pid_t self = 0;
+	FILE *pidfile = NULL;
+
+	self = getpid();
+	pidfile = fopen(path, "w");
+	if (pidfile) {
+		fprintf(pidfile, "%ld\n", (long)self);
+		fclose(pidfile);
+	}
+	else {
+		perror("Warning: couldn't open pidfile");
+	}
+}
+
+static
+void
 usage(const char *ctl)
 {
 	




More information about the Submit mailing list