Jump stacks before unlocking semaphores
[akaros.git] / kern / drivers / dev / proc.c
index ccbe92d..102d351 100644 (file)
@@ -81,7 +81,6 @@ enum {
        CMstartstop,
        CMstartsyscall,
        CMstop,
-       CMtrace,
        CMwaitstop,
        CMwired,
        CMcore,
@@ -145,7 +144,6 @@ struct cmdtab proccmd[] = {
        {CMstartstop, "startstop", 1},
        {CMstartsyscall, "startsyscall", 1},
        {CMstop, "stop", 1},
-       {CMtrace, "trace", 0},
        {CMwaitstop, "waitstop", 1},
        {CMwired, "wired", 2},
        {CMcore, "core", 2},
@@ -439,10 +437,10 @@ static struct chan *procopen(struct chan *c, int omode)
                topens++;
                if (tevents == NULL) {
                        tevents = (Traceevent *) kzmalloc(sizeof(Traceevent) * Nevents,
-                                                                                         KMALLOC_WAIT);
+                                                                                         MEM_WAIT);
                        if (tevents == NULL)
                                error(ENOMEM, ERROR_FIXME);
-                       tpids = kzmalloc(Ntracedpids * 20, KMALLOC_WAIT);
+                       tpids = kzmalloc(Ntracedpids * 20, MEM_WAIT);
                        if (tpids == NULL) {
                                kfree(tpids);
                                tpids = NULL;
@@ -535,7 +533,7 @@ static struct chan *procopen(struct chan *c, int omode)
                case Qns:
                        if (omode != O_READ)
                                error(EPERM, ERROR_FIXME);
-                       c->aux = kzmalloc(sizeof(struct mntwalk), KMALLOC_WAIT);
+                       c->aux = kzmalloc(sizeof(struct mntwalk), MEM_WAIT);
                        break;
                case Qstatus:
                case Qvmstatus:
@@ -619,7 +617,7 @@ static int procwstat(struct chan *c, uint8_t * db, int n)
        if (strcmp(current->user, p->user) != 0 && strcmp(current->user, eve) != 0)
                error(EPERM, ERROR_FIXME);
 
-       d = kzmalloc(sizeof(struct dir) + n, KMALLOC_WAIT);
+       d = kzmalloc(sizeof(struct dir) + n, MEM_WAIT);
        n = convM2D(db, n, &d[0], (char *)&d[1]);
        if (n == 0)
                error(ENOENT, ERROR_FIXME);
@@ -788,11 +786,11 @@ static char *argcpy(char *s, char *p)
        if (n > 128)
                n = 128;
        if (n <= 0) {
-               t = kzmalloc(1, KMALLOC_WAIT);
+               t = kzmalloc(1, MEM_WAIT);
                *t = 0;
                return t;
        }
-       t = kzmalloc(n, KMALLOC_WAIT);
+       t = kzmalloc(n, MEM_WAIT);
        tp = t;
        te = t + n;
 
@@ -872,7 +870,7 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
                case Qstatus:{
                                /* the old code grew the stack and was hideous.
                                 * status is not a high frequency operation; just malloc. */
-                               char *buf = kmalloc(4096, KMALLOC_WAIT);
+                               char *buf = kmalloc(4096, MEM_WAIT);
                                char *s = buf, *e = buf + 4096;
                                int i;
 
@@ -893,7 +891,7 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
                case Qvmstatus:
                        {
                                size_t buflen = 50 * 65 + 2;
-                               char *buf = kmalloc(buflen, KMALLOC_WAIT);
+                               char *buf = kmalloc(buflen, MEM_WAIT);
                                int i, offset;
                                offset = 0;
                                offset += snprintf(buf + offset, buflen - offset, "{\n");
@@ -1023,7 +1021,7 @@ static long procwrite(struct chan *c, void *va, long n, int64_t off)
                        if (n >= sizeof buf - strlen(p->text) - 1)
                                error(E2BIG, ERROR_FIXME);
                        l = snprintf(buf, sizeof buf, "%s [%s]", p->text, (char *)va);
-                       args = kzmalloc(l + 1, KMALLOC_WAIT);
+                       args = kzmalloc(l + 1, MEM_WAIT);
                        if (args == NULL)
                                error(ENOMEM, ERROR_FIXME);
                        memmove(args, buf, l);
@@ -1256,7 +1254,7 @@ static void procctlreq(struct proc *p, char *va, int n)
        case CMstraceme:
                /* common allocation.  if we inherited, we might have one already */
                if (!p->strace) {
-                       strace = kzmalloc(sizeof(*p->strace), KMALLOC_WAIT);
+                       strace = kzmalloc(sizeof(*p->strace), MEM_WAIT);
                        strace->q = qopen(65536, Qdropoverflow|Qcoalesce, NULL, NULL);
                        /* both of these refs are put when the proc is freed.  procs is for
                         * every process that has this p->strace.  users is procs + every
@@ -1286,9 +1284,6 @@ static void procctlreq(struct proc *p, char *va, int n)
        default:
                error(EFAIL, "Command not implemented");
                break;
-       case CMtrace:
-               systrace_trace_pid(p);
-               break;
        case CMclose:
                procctlclosefiles(p, 0, atoi(cb->f[1]));
                break;