Date: Tue, 21 Nov 1995 14:29:47 +0100 From: Andres Vega Garcia <Andres.Vega_Garcia@sophia.inria.fr> To: hackers@freebsd.org Subject: Re: Notion of time in kernel + malloc + new comment Message-ID: <199511211329.OAA18209@fun.inria.fr> In-Reply-To: your message of Mon, 20 Nov 1995 20:35:33 %2B0100.
next in thread | raw e-mail | index | archive | help
: Andres Vega Garcia <Andres.Vega_Garcia@sophia.inria.fr> wrote:
OK, thank you for all your answers.
> I
>need to have a notion of time (seconds (or tens of seconds) elapsed
>since ...).
I'm keeping the solution:
#include <sys/kernel.h>
int s = splclock();
long cur_time = time.tv_sec;
splx(s);
>
> I have realized that in order to do malloc I need the "kernel" call
>to malloc. As this is related with the ethernet drivers (and ppp), I
>decided to use:
For malloc, I do the way if_attach does (M_WAITOK):
malloc(sizeof(fs_ctx_t),M_DEVBUF,M_WAITOK) for the per interface
structures.
and
malloc(sizeof(fs_ses_t),M_DEVBUF,M_NOWAIT) for the dynamic
srtuctures.
=> The new comment:
By now I'm replacing (some) calls to IF_ENQUEUE & IF_DEQUEUE, but I
do that for every driver I want to modify. It would be very nice just
to modify IF_ENQUEUE and IF_DEQUEUE and let the new policy take
effect automatically in every driver, but:
* I need to retrive a context information, which now, I get by
indexing with `if_unit' and then calling the new function (e.g.
fs_enqueue) with the pointer to the structure (the context) (as well
as the old parameters).
* I need to distinguish the different sessions (for IP, source and
destination address and port), then, I need a lookup with the
sockaddr structure. By now, that has to be done for every driver too.
Do you see a way of not having to modify every driver?
Does modifying IF_ENQUEUE and IF_DEQUEUE can have side effects for
other code? Remember with fair queueing I want to give every session
the same bandwidth, but what happens with drivers which control a
device, where the notion of several conexions passing trough doesn't
exist?
Thank you in advance.
Andres
------------------------------
INRIA Sophia-Antipolis, France
avega@fun.inria.fr
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511211329.OAA18209>
