| plan 9 kernel history: overview | file list | diff list |
1999/1120/pc/devusb.c (diff list | history)
| 1999/1119/sys/src/9/pc/devusb.c:170,187 – 1999/1120/sys/src/9/pc/devusb.c:170,187 (short | long | prev | next) | ||
| 1999/1005 | struct Udev { Ref; Lock; | |
| 1999/1120 | int x; /* index in usbdev[] */ int busy; int state; int id; | |
| 1999/1005 | byte port; /* port number on connecting hub */ byte class; byte subclass; byte proto; | |
| 1999/1120 | int ls; int npt; | |
| 1999/1005 | Endpt* ep[16]; /* active end points */ | |
| 1999/1120 | Udev* ports; /* active ports, if hub */ | |
| 1999/1005 | Udev* next; /* next device on this hub */ }; | |
| 1999/1119/sys/src/9/pc/devusb.c:200,210 – 1999/1120/sys/src/9/pc/devusb.c:200,210 | ||
| 1999/1005 | }; static char *devstates[] = { | |
| 1999/1120 | [Disabled] "Disabled", [Attached] "Attached", [Enabled] "Enabled", [Assigned] "Assigned", [Configured] "Configured", | |
| 1999/1005 | }; /* | |
| 1999/1119/sys/src/9/pc/devusb.c:1685,1691 – 1999/1120/sys/src/9/pc/devusb.c:1685,1691 | ||
| 1999/1005 | l = snprint(s, READSTR, "%s %d %d %d\n", devstates[d->state], d->class, d->subclass, d->proto); for(i=0; i<nelem(d->ep); i++) if((e = d->ep[i]) != nil) /* TO DO: freeze e */ | |
| 1999/1120 | l += snprint(s+l, READSTR-l, "%2d class 0x%2.2ux subclass 0x%2.2ux proto 0x%2.2ux bytes %10lud blocks %10lud\n", i, e->class, e->subclass, e->proto, e->nbytes, e->nblocks); | |
| 1999/1005 | n = readstr(offset, a, n, s); poperror(); free(s); | |
| 1999/1119/sys/src/9/pc/devusb.c:1836,1846 – 1999/1120/sys/src/9/pc/devusb.c:1836,1858 | ||
| 1999/1005 | nf = getfields(cmd, fields, nelem(fields)); if(nf > 1 && strcmp(fields[0], "speed") == 0){ d->ls = strtoul(fields[1], nil, 0) == 0; | |
| 1999/1119 |
| |
| 1999/1005 |
| |
| 1999/1119 |
| |
| 1999/1120 | } else if(nf > 5 && strcmp(fields[0], "class") == 0){ i = strtoul(fields[2], nil, 0); d->npt = strtoul(fields[1], nil, 0); /* class config# class subclass proto */ if (i < 0 || i >= nelem(d->ep) || d->npt > nelem(d->ep) || i >= d->npt) error(Ebadarg); if (i == 0) { d->class = strtoul(fields[3], nil, 0); d->subclass = strtoul(fields[4], nil, 0); d->proto = strtoul(fields[5], nil, 0); } if(d->ep[i] == nil) d->ep[i] = devendpt(d, i, 1); d->ep[i]->class = strtoul(fields[3], nil, 0); d->ep[i]->subclass = strtoul(fields[4], nil, 0); d->ep[i]->proto = strtoul(fields[5], nil, 0); | |
| 1999/1005 | }else if(nf > 2 && strcmp(fields[0], "data") == 0){ i = strtoul(fields[1], nil, 0); if(i < 0 || i >= nelem(d->ep) || d->ep[i] == nil) | |
| 1999/1119/sys/src/9/pc/devusb.c:1879,1887 – 1999/1120/sys/src/9/pc/devusb.c:1891,1898 | ||
| 1999/1007 | XPRINT("field 1: 0 <= %d < %d\n", i, nelem(d->ep)); | |
| 1999/1005 | error(Ebadarg); | |
| 1999/1006 | } | |
| 1999/1005 |
| |
| 1999/1120 | if((e = d->ep[i]) == nil) e = devendpt(d, i, 1); | |
| 1999/1005 | if(waserror()){ freept(e); nexterror(); | |