on Sat, Jan 17, 2015 at 8:32 AM, Simon Brand <simon.brand@xxxxxxxxxxxxxxxx> 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.
Can you please explain to me, why the original version is always working
and "mine" is not?
Have you searched through archives. Exactly 7 years ago, I had the same question.
http://comments.gmane.org/gmane.linux.kernel.kernelnewbies/24141
http://comments.gmane.org/gmane.linux.kernel.kernelnewbies/24141
Thanks -
Manish
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies