Hi, On 2016/03/08 1:26, Taylor R Campbell wrote: > Date: Mon, 7 Mar 2016 17:39:15 +0900 > From: Kengo NAKAHARA <[email protected]> > Hmm..., sorry, I am confused. Just to confirm, m_tag needs metadata > (struct m_tag) in the front of m_tag data(e.g. in this case struct > altq_pktqttr), so both struct m_tag and sturct altq_pktattr are > necessary, I think. It is similar to malloc(len + sizeof(struct m_tag)) > in m_tag_get(). > Could you tell me about the reason which the addition of sizes may not > necessarily work in detail? snip > Presumably that is why this has not been a problem in practice. But > it is not hard to imagine an architecture where uint64_t requires > 8-byte alignment even though pointers require only 4-byte alignment. > E.g., it wouldn't surprise me if MIPS N32 or similar required this -- > pointers are 32-bit and need only 4-byte alignment but the native > 64-bit words need 8-byte alignment.
Ahhh, sorry, I misread your last comment. Now I see. Thank you very much for your such detailed comment! > In any case, whether or not you change anything about the existing > m_tag_get code or users, I suggest that you use the struct and > container_of idiom in any new code. Hmm, I will change the existing code bit by bit as I modify around such codes. After this, I use the struct and container_of idiom which you suggest. Thanks, -- ////////////////////////////////////////////////////////////////////// Internet Initiative Japan Inc. Device Engineering Section, Core Product Development Department, Product Division, Technology Unit Kengo NAKAHARA <[email protected]>
