Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Nov 1997 12:24:20 -0800 (PST)
From:      "Jamil J. Weatherbee" <jamil@trojanhorse.ml.org>
To:        hackers@freebsd.org
Cc:        dufault@hda.com
Subject:   Strategy Routines
Message-ID:  <Pine.BSF.3.96.971101121127.5598A-100000@trojanhorse.ml.org>

next in thread | raw e-mail | index | archive | help

I've noticed that startegy routines are never bassed buffers >64kb (at
least as far as I can tell).  However a read call can be done with a
buffer just under 1/2 megabyte, and so the strategy routine will get
called 9 or 10 times (using rawread/rawwrite).  It seems that between
these calls to the strategy
routine no rescheduling is done, so if filling a 1/2 megabyte buffer takes
a while, then interactive activity basically gets locked out for that
period.  Now I know that if the drivers routine can be interrupt driven
the this is all solved, but if (as in digital_out_strategy() in labpc.c)
someone passes a 1/2 megabyte buffer, youv'e got a problem as your going
to be out of business for at least .5 seconds.  So how can the equivalent
of reschedule() under the linux kernel be done in here.  You could then
limit yourself (in the drivers) to say 1024 bytes written then a
reschedule() to maintain the interactivity.






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.971101121127.5598A-100000>