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>