* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox