* [uml-devel] new patch
@ 2005-08-26 19:56 Allan Graves
0 siblings, 0 replies; only message in thread
From: Allan Graves @ 2005-08-26 19:56 UTC (permalink / raw)
To: user-mode-linux-devel
[-- Attachment #1: Type: text/plain, Size: 53 bytes --]
Jeff, here we have fscanf. :)
Sorry bout that.
Allan
[-- Attachment #2: interrupt.patch --]
[-- Type: text/plain, Size: 2837 bytes --]
--- uml_mconsole.c.orig 2005-08-26 13:08:33.000000000 -0400
+++ uml_mconsole.c 2005-08-26 15:53:11.000000000 -0400
@@ -37,13 +37,20 @@
#include <sys/uio.h>
#include <readline/readline.h>
#include <readline/history.h>
+#include <signal.h>
+
static char uml_name[11];
static struct sockaddr_un sun;
+static long int uml_pid;
-static int do_switch(char *file, char *name)
+static int do_switch(char *dir, char *file, char *name)
{
struct stat buf;
+ char pid_path[MAXPATHLEN + 1]="";
+ FILE *fd;
+ char pid[32]="";
+ int x=-1;
if(stat(file, &buf) == -1){
fprintf(stderr, "Warning: couldn't stat file: %s - ", file);
@@ -53,6 +60,18 @@
sun.sun_family = AF_UNIX;
strncpy(sun.sun_path, file, sizeof(sun.sun_path));
strncpy(uml_name, name, sizeof(uml_name));
+
+ /* Open and read PID file */
+ snprintf(pid_path, sizeof(pid_path), "%s/%s/pid", dir, name);
+ if(!(fd=fopen(pid_path, "r"))) {
+ uml_pid=-1;
+ return(0);
+ }
+
+ if(fscanf(fd, "%ld", ¨_pid)!=1){
+ uml_pid=-1;
+ return(0);
+ }
return(0);
}
@@ -65,19 +84,22 @@
snprintf(dir, sizeof(dir), "%s/.uml", home);
snprintf(file, sizeof(file), "%s/%s/mconsole", dir, name);
if(strncmp(name, dir, strlen(dir))){
- if(!do_switch(file, name)) return(0);
+ if(!do_switch(dir,file, name)) return(0);
try_file = 0;
}
}
+ snprintf(dir, sizeof(dir), "/tmp/uml/%s", name);
snprintf(tmp, sizeof(tmp), "/tmp/uml/%s/mconsole", name);
if(strncmp(name, "/tmp/uml/", strlen("/tmp/uml/"))){
- if(!do_switch(tmp, name)) return(0);
+ if(!do_switch(dir,tmp, name)) return(0);
}
- if(!do_switch(name, name)) return(0);
+
+ snprintf(dir, sizeof(dir), "./");
+ if(!do_switch(dir, name, name)) return(0);
if(!try_file) return(-1);
- return(do_switch(file, name));
+ return(do_switch(dir,file, name));
}
#define MCONSOLE_MAGIC (0xcafebabe)
@@ -264,7 +286,8 @@
quit - Quit mconsole\n\
switch <socket-name> - Switch control to the given machine\n\
log -f <filename> - use contents of <filename> as UML log messages\n\
- mconsole-version - version of this mconsole program\n";
+ mconsole-version - version of this mconsole program\n\
+ int - Interrupt UML session \n";
static int help_cmd(int fd, char *command)
{
@@ -344,6 +367,19 @@
return(0);
}
+static int int_cmd(int fd, char *command)
+{
+
+ if (uml_pid == -1) {
+ printf("Cannot determine the PID of your UML session, not sending signal.\n");
+ return(0);
+ }
+
+ kill(uml_pid, SIGINT);
+
+ return(0);
+}
+
struct cmd {
char *command;
int (*proc)(int, char *);
@@ -355,6 +391,7 @@
{ "switch", switch_cmd },
{ "log", log_cmd },
{ "mconsole-version", mversion_cmd },
+ { "int", int_cmd },
{ NULL, default_cmd }
/* default_cmd means "send it to the UML" */
};
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-08-26 19:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-26 19:56 [uml-devel] new patch Allan Graves
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.