> Your problem is that you are using allocb() and when the requested size
> is < FASTBUF, LiS (ala SVR 4.2 streams) uses a data buffer internal to
> the combined message/data block structure. 

Brian,
Interestingly enough it is other way around. At least in my case.

Since I compiled with the latest LiS
the allochdr() defined there as lis_kmem_cache_allochdr() and is
8-bytes aligned. The data buffer offset inside this  msg for 
cases len < FASTBUF turned out to be also 8-bytes aligned.

Here is a printout from driver:

len 53 mp dc252ca0 
mp->b_wptr dc252ce0 mp->b_rptr dc252ce0 mp->b_datap->db_base dc252ce0

db_base is 0x40 bytes(header size) below mp.
I.e. for small buffers everything is 8-bytes aligned.


For sizes > 128

len 282 mp dc252f20 
mp->b_wptr d9c66958 mp->b_rptr d9c66834 mp->b_datap->db_base d9c66834

it can be seen that db_base is allocated in separate area from mp header. 
and it is 4-bytes aligned.

Puzzle.  
I know I'm missing something.

The allocdb uses kmalloc() for data block allocations, so as you said
it must be 32-bytes aligned.
Are you sure it is always 32-bytes?


thanks,
--
Eugene
 

__________________________________________________________________
New! Unlimited Netscape Internet Service.
Only $9.95 a month -- Sign up today at http://isp.netscape.com/register
Act now to get a personalized email address!

Netscape. Just the Net You Need.
_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

Reply via email to