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
