On Jan 17, 2015, at 8:32 AM, Simon Brand <simon.brand@postadigitale.de> wrote:
Good evening,
i read the article about the container_of function: http://www.kroah.com/log/linux/container_of.html
I understand what it does and how it works.
I thought, it could be simplified by replacing it through this:
#define container_of(ptr, type, member) ({ \ (type *)( (char *)ptr - offsetof(type,member) );})
Original: #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); (type *)( (char *)__mptr - offsetof(type,member) );})
ptr has the type of a pointer to the member, which should be the same as __mptr? The value should although be the same.
First I tried it in a self written script, then replaced it in include/linux/kernel.h and compiled it as usermode linux -> working well.
Then I compiled it and run it in a VM, but it is not working. What do you mean by that? What is not working?
Can you please explain to me, why the original version is always working and "mine" is not?
Thank you for your time!
Regards, Simon
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies