1. Although it is a rather obvious requirement, it would help newcomers to the ALQ service to note in the man 9 alq page that "options ALQ" has to be added to the kernel configuration in order to gain access to ALQ. 2. The alq_post and alq_write methods always write alq.aq_entlen bytes to the vnode. This is fine for record-oriented, fixed-size "protocols" where one is basically writing out a C struct on each write. But, if one wants to output arbitrarily-sized strings or binary sequences and does want the consumer to have to know that internally the output file was generated in fixed-sized chunks, then a method prototype like this would be very useful: int alq_write_bytes( struct alq * const, const void * const data, unsigned int maxByteCnt ); // returns byte count actually "written" Here, the ALQ internal code would post an ALE with a data length equal to min( pAlq->aq_entlen, maxByteCnt ). The ALD then would write to the vnode not alq.aq_entlen bytes but ale.data_len bytes. The alq_write caller could implement a "while bytes left" loop around the alq_write_bytes to write out sequences larger than the ALQ entry size. The destination file then would be contiguous without padding at the end of the last partial entry. The needed changes would be: a. add a data_len field to struct ale b. implement a new alq_write_bytes method in kern_alq.c c. set ale.data_len to alq.aq_entlen in alq_get() (to set the default size) d. modify alq_post() to write ale.data_len, not alq.ag_entlen bytes to the vnode Lonnie. PS: If there is some other kernel facility for doing just what I suggest, then my newbie ignorance has been revealed and I would appreciate being so informed.Received on Fri Aug 05 2005 - 18:40:44 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:40 UTC