I must say that the user and kernel mode are indeed using objects with the same 
names, but with very different semantics.

2 examples:
1) The CL_SPINLOCK: on the user it is reentrant, on the kernel not. On the 
user, the caller might sleep (can protect long operations) on the kernel 
sleeping is not allowed.
2) CL_TIMER. On the user, the start waits for the other timer operation to end, 
on the kernel it does not. On the user the stop waits for the callback to 
return (but not always...) on the kernel it doesn't wait. As a matter of fact, 
in the kernel code, after calling stop, one can not know if the callback has 
executed already or not.

I must say that for the long term we need to split the joint code.

Thanks
Tzachi

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Hefty, Sean
Sent: Monday, June 21, 2010 6:59 PM
To: Leonid Keller; Smith, Stan; Alex Naslednikov; Fab Tillier
Cc: [email protected]; Uri Habusha
Subject: Re: [ofw] [Patch][Core] Fix at IRP cancellation mechanism

Can we please completely separate the IBAL kernel code from user space?

> +#ifdef CL_KERNEL
> 
> 
> 
> +typedef struct _al_dev_open_context al_dev_open_context_t;
> 
> 
> 
> +typedef struct _al_csq
> 
> +{
> 
> +             IO_CSQ
> csq;
> 
> +             KSPIN_LOCK
> lock;
> 
> +             LIST_ENTRY
> queue;
> 
> +             al_dev_open_context_t                              *dev_ctx;
> 
> +} al_csq_t;
> 
> +
> 
> +#endif
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to