+long vs_context_state(unsigned int cmd)
+{
+ char id_buf[8], cmd_buf[32];
+
+ char *argv[] = {vshelper_path, NULL, id_buf, NULL, 0};
+ char *envp[] = {"HOME=/", "TERM=linux",
+ "PATH=/sbin:/usr/sbin:/bin:/usr/bin", cmd_buf, 0};
+
+ snprintf(id_buf, sizeof(id_buf)-1, "%d", vx_current_xid());
+ snprintf(cmd_buf, sizeof(cmd_buf)-1, "VS_CMD=%08x", cmd);
+
+ switch (cmd) {
+ case VS_CONTEXT_CREATED:
+ argv[1] = "startup";
+ break;
+ case VS_CONTEXT_DESTROY:
+ argv[1] = "shutdown";
+ break;
+ default:
+ return 0;
+ }
+
+ if (call_usermodehelper(*argv, argv, envp, 1)) {
+ printk( KERN_WARNING
+ "vs_context_state(): failed to exec (%s %s %s %s)\n",
+ vshelper_path, argv[1], argv[2], argv[3]);
+ return 0;
+ }
+ return 0;
+}
+