From b6dd50ac3f92741f12f32c6ad5219d2751b1b7f7 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 30 Apr 2001 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2001-04-30 --- ip/devip.c | 3 +-- ip/ip.c | 16 ++++++++++++---- pc/devvga.c | 3 +-- pc/vgacyber938x.c | 11 +++-------- port/devcons.c | 3 +++ 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/ip/devip.c b/ip/devip.c index 41869e94df281ac57f6fb0958f17015afb3c2ca5..48d4843a238844011136b8188c12a32ddda7dba6 100644 --- a/ip/devip.c +++ b/ip/devip.c @@ -367,8 +367,7 @@ ipopen(Chan* c, int omode) int perm; Fs *f; - omode &= 3; - perm = m2p[omode]; + perm = m2p[omode&3]; f = ipfs[c->dev]; diff --git a/ip/ip.c b/ip/ip.c index c06261eb1360d5dc924e06c6f44133df21248502..efe80f06028f1f35f2be209992def65dc1bbbcba 100644 --- a/ip/ip.c +++ b/ip/ip.c @@ -206,7 +206,8 @@ ipoput(Fs *f, Block *bp, int gating, int ttl, int tos) if(!gating) eh->vihl = IP_VER|IP_HLEN; eh->ttl = ttl; - eh->tos = tos; + if(!gating) + eh->tos = tos; if(!canrlock(ifc)) goto free; @@ -223,8 +224,10 @@ ipoput(Fs *f, Block *bp, int gating, int ttl, int tos) if(!gating) hnputs(eh->id, incref(&ip->id)); hnputs(eh->length, len); - eh->frag[0] = 0; - eh->frag[1] = 0; + if(!gating){ + eh->frag[0] = 0; + eh->frag[1] = 0; + } eh->cksum[0] = 0; eh->cksum[1] = 0; hnputs(eh->cksum, ipcsum(&eh->vihl)); @@ -265,7 +268,12 @@ ipoput(Fs *f, Block *bp, int gating, int ttl, int tos) } xp->rp += offset; - for(fragoff = 0; fragoff < dlen; fragoff += seglen) { + if(gating) + fragoff = nhgets(eh->frag); + else + fragoff = 0; + dlen += fragoff; + for(; fragoff < dlen; fragoff += seglen) { nb = allocb(IPHDR+seglen); feh = (Iphdr*)(nb->rp); diff --git a/pc/devvga.c b/pc/devvga.c index bc95e2c7411584016ab3535e3cea7c9fae737d02..d0f62bafe4a279c03041ad3cfda008213d4ff939 100644 --- a/pc/devvga.c +++ b/pc/devvga.c @@ -65,11 +65,10 @@ vgaopen(Chan* c, int omode) } static void -vgaclose(Chan*c) +vgaclose(Chan*) { VGAscr *scr; - pprint("vgaclose: pid %d, %d, %p\n", up->pid, c->ref, c); scr = &vgascreen[0]; if (scr && scr->dev && scr->dev->ovlctl) { static char disable[] = "disable\n"; diff --git a/pc/vgacyber938x.c b/pc/vgacyber938x.c index dd4b8ce0fcd3ade1a7081ba058ae2dfb5acfcf97..7c86679c5acbc20c25e9afbe2608efbdfb6b08cf 100644 --- a/pc/vgacyber938x.c +++ b/pc/vgacyber938x.c @@ -205,19 +205,14 @@ cyber938xcurenable(VGAscr* scr) vgaxo(Crtx, 0x50, CursorON); } -static void -cyber938xdrawinit(VGAscr *scr) -{ -} - VGAdev vgacyber938xdev = { "cyber938x", - 0, /* enable */ - 0, /* disable */ + nil, /* enable */ + nil, /* disable */ cyber938xpage, /* page */ cyber938xlinear, /* linear */ - cyber938xdrawinit, /* drawinit */ + nil, /* drawinit */ }; VGAcur vgacyber938xcur = { diff --git a/port/devcons.c b/port/devcons.c index 2c75f5b51417a6d2284a3899b6053f0dcb0fe19d..60c9c59b8a38c12c67fbe16c7fc856506c836122 100644 --- a/port/devcons.c +++ b/port/devcons.c @@ -426,6 +426,9 @@ kbdputc(Queue*, int ch) Rune r; char *next; + if(kbd.ir == nil) + return 0; /* in case we're not inited yet */ + ilock(&kbd.lockputc); /* just a mutex */ r = ch; n = runetochar(buf, &r);