From 5affa3702322081b506ce03d2fe143463466fdb1 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 13 Jul 2000 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2000-07-13 --- alphapc/devether.c | 8 ++++---- carrera/devether.c | 8 ++++---- mpc/devether.c | 8 ++++---- pc/devether.c | 8 ++++---- pc/i8253.c | 11 +++++++++-- 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/alphapc/devether.c b/alphapc/devether.c index fc9e06889f787b35b41f405311652b5a78b6c2b4..f6406ee891d8938670e525229881ed5c2273ce21 100644 --- a/alphapc/devether.c +++ b/alphapc/devether.c @@ -110,12 +110,12 @@ etherrtrace(Netfile* f, Etherpkt* pkt, int len) if(qwindow(f->in) <= 0) return; - if(len > 64) - n = 64; + if(len > 58) + n = 58; else n = len; - bp = iallocb(n); - if(bp == 0) + bp = iallocb(64); + if(bp == nil) return; memmove(bp->wp, pkt->d, n); i = TK2MS(MACHP(0)->ticks); diff --git a/carrera/devether.c b/carrera/devether.c index e6e35fcb84660bbd41266d582cbffe707e76a604..20053c00a119c911405a2faceaab3da81b8d0046 100644 --- a/carrera/devether.c +++ b/carrera/devether.c @@ -110,12 +110,12 @@ etherrtrace(Netfile* f, Etherpkt* pkt, int len) if(qwindow(f->in) <= 0) return; - if(len > 64) - n = 64; + if(len > 58) + n = 58; else n = len; - bp = iallocb(n); - if(bp == 0) + bp = iallocb(64); + if(bp == nil) return; memmove(bp->wp, pkt->d, n); i = TK2MS(MACHP(0)->ticks); diff --git a/mpc/devether.c b/mpc/devether.c index 4334bf9559d6f64b3d8e5797b164e9193357a0b6..4dd3d9812fce3b731243cef8b81483c6a8e19dff 100644 --- a/mpc/devether.c +++ b/mpc/devether.c @@ -110,12 +110,12 @@ etherrtrace(Netfile* f, Etherpkt* pkt, int len) if(qwindow(f->in) <= 0) return; - if(len > 64) - n = 64; + if(len > 58) + n = 58; else n = len; - bp = iallocb(n); - if(bp == 0) + bp = iallocb(64); + if(bp == nil) return; memmove(bp->wp, pkt->d, n); i = TK2MS(MACHP(0)->ticks); diff --git a/pc/devether.c b/pc/devether.c index fc9e06889f787b35b41f405311652b5a78b6c2b4..f6406ee891d8938670e525229881ed5c2273ce21 100644 --- a/pc/devether.c +++ b/pc/devether.c @@ -110,12 +110,12 @@ etherrtrace(Netfile* f, Etherpkt* pkt, int len) if(qwindow(f->in) <= 0) return; - if(len > 64) - n = 64; + if(len > 58) + n = 58; else n = len; - bp = iallocb(n); - if(bp == 0) + bp = iallocb(64); + if(bp == nil) return; memmove(bp->wp, pkt->d, n); i = TK2MS(MACHP(0)->ticks); diff --git a/pc/i8253.c b/pc/i8253.c index 63d94b95b93619ed9ad556820a44acc271dae6c2..4c38c6fccb21b9a31b3fcf0f8651e752796f310e 100644 --- a/pc/i8253.c +++ b/pc/i8253.c @@ -55,6 +55,7 @@ enum static struct { Lock; + int havecyc; int enabled; int mode; vlong when; /* next fastticks a clock interrupt should occur */ @@ -72,6 +73,7 @@ i8253init(int aalcycles, int havecycleclock) if(initialised == 0){ initialised = 1; + i8253.havecyc = havecycleclock; ioalloc(T0cntr, 4, 0, "i8253"); ioalloc(T2ctl, 1, 0, "i8253.cntr2ctl"); @@ -204,7 +206,7 @@ clockintrsched0(vlong next) int havecycintr(void) { - return i8253.enabled; + return i8253.havecyc && i8253.enabled; } void @@ -213,7 +215,7 @@ clockintrsched(void) vlong next; ilock(&i8253); - if(i8253.enabled){ + if(i8253.enabled && i8253.havecyc){ next = cycintrnext(); if(next != i8253.cycwhen) clockintrsched0(next); @@ -226,6 +228,11 @@ clockintr0(Ureg* ureg, void *v) { vlong now, when; + if(!i8253.havecyc){ + clockintr(ureg, v); + return; + } + now = fastticks(nil); when = i8253.when; if(now >= i8253.when){