| plan 9 kernel history: overview | file list | diff list |
1991/0402/power/devhotrod.c (diff list | history)
| 1991/0401/sys/src/9/power/devhotrod.c:25,31 – 1991/0402/sys/src/9/power/devhotrod.c:25,31 (short | long | prev | next) | ||
| 1991/0303 | /* | |
| 1991/0307 | * If 1, ENABCKSUM causes data transfers to have checksums | |
| 1991/0303 | */ | |
| 1991/0331 |
| |
| 1991/0402 | #define ENABCKSUM 1 | |
| 1991/0303 | ||
| 1990/1013 | typedef struct Hotrod Hotrod; | |
| 1991/0401/sys/src/9/power/devhotrod.c:278,283 – 1991/0402/sys/src/9/power/devhotrod.c:278,284 | ||
| 1991/0212 | * use supplied buffer, no need to lock for reply */ | |
| 1991/0306 | isflush = 0; | |
| 1991/0402 | memset(buf, 0, n); | |
| 1991/0306 | mp = &((User*)(u->p->upage->pa|KZERO))->khot; if(mp->abort){ /* use reserved flush msg */ mp = &((User*)(u->p->upage->pa|KZERO))->fhot; | |
| 1991/0401/sys/src/9/power/devhotrod.c:313,323 – 1991/0402/sys/src/9/power/devhotrod.c:314,334 | ||
| 1991/0303 | if(mp->param[2] != hotsum(buf, m, mp->param[2])){ | |
| 1991/0307 | hp->addr->error++; | |
| 1991/0303 | print("hotrod cksum err is %lux sb %lux\n", | |
| 1991/0307 |
| |
| 1991/0402 | hotsum(buf, m, 1), mp->param[2]); print("addr %lux\n", ((char*)buf)+m); { int i; ulong *p = buf; for(i=2; i<m/4; i++) if(p[i] != i-2) print("%d sb %d %lux %lux\n", p[i], i-2, p[i], &p[i]); } | |
| 1991/0303 | error(Eio); } | |
| 1991/0306 |
| |
| 1991/0402 | mp->abort = 0; if(isflush) u->khot.abort = 0; /* flushed message's done too */ else | |
| 1991/0306 | poperror(); | |
| 1991/0212 | }else{ /* | |
| 1991/0401/sys/src/9/power/devhotrod.c:347,358 – 1991/0402/sys/src/9/power/devhotrod.c:358,370 | ||
| 1991/0303 | if(mp->param[2] != hotsum((ulong*)hp->buf, m, mp->param[2])){ | |
| 1991/0307 | hp->addr->error++; | |
| 1991/0303 | print("hotrod cksum err is %lux sb %lux\n", | |
| 1991/0402 | hotsum((ulong*)hp->buf, m, 1), mp->param[2]); | |
| 1991/0303 | qunlock(&hp->buflock); | |
| 1991/0307 | {int i; for(i=0; i<8; i++) print("%lux\n", ((ulong*)buf)[i]); } | |
| 1991/0303 | error(Eio); } | |
| 1991/0318 | memmove(buf, hp->buf, m); | |
| 1991/0402 | mp->abort = 0; | |
| 1991/0303 | qunlock(&hp->buflock); | |
| 1991/0212 | } | |
| 1991/0303 | return m; | |
| 1991/0401/sys/src/9/power/devhotrod.c:383,388 – 1991/0402/sys/src/9/power/devhotrod.c:395,401 | ||
| 1991/0306 | * use supplied buffer, no need to lock for reply | |
| 1991/0212 | */ | |
| 1991/0306 | mp = &((User*)(u->p->upage->pa|KZERO))->khot; | |
| 1991/0402 | mp->wtype = ((char*)buf)[0]; | |
| 1991/0306 | if(mp->abort) /* use reserved flush msg */ mp = &((User*)(u->p->upage->pa|KZERO))->fhot; | |
| 1991/0212 | qlock(hp); | |
| 1991/0401/sys/src/9/power/devhotrod.c:397,402 – 1991/0402/sys/src/9/power/devhotrod.c:410,416 | ||
| 1991/0306 | * use hotrod buffer. lock the buffer until the reply | |
| 1991/0212 | */ | |
| 1991/0306 | mp = &((User*)(u->p->upage->pa|KZERO))->uhot; | |
| 1991/0402 | mp->wtype = ((char*)buf)[0]; | |
| 1991/0212 | qlock(&hp->buflock); qlock(hp); | |
| 1991/0318 | memmove(hp->buf, buf, n); | |