Showing posts with label works. Show all posts
Showing posts with label works. Show all posts
Wednesday, March 4, 2015
How container of macro works an Example
Here iam giving a small code snippet that gives and idea about working of "container_of", this posed me little difficulty in understanding, after google-ing i got some examples and after working on that i wrote a simple C application that depicts its working. here i have defined two macros "offsetof" and "container_of" which i have extracted from "kernel.h" header.
Please interpret this code and try some trick to understand "container_of".
container_of macro is defined in linux/kernel.h
syntax: container_of( pointer, container_type, container_field );
This macro takes a pointer to a filed name container_field, within a structure of type container_type, and returns a pointer to the containing structure .
simply this is a convenience macro that may be used to obtain a pointer to a structure from a pointer to some other structure contained with in it.
Code :
#include <stdio.h>
#include <stdlib.h>
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define container_of(ptr, type, member) ({
const typeof( ((type *)0)->member ) *__mptr = (ptr);
(type *)( (char *)__mptr - offsetof(type,member) );})
struct test1 {
int a;
};
struct test2 {
int b;
struct test1 z;
int c;
};
int main()
{
/* existing structure */
struct test2 *obj;
obj = malloc(sizeof(struct test2));
if(obj == NULL){
printf("Error: Memory not allocated...!
");
}
obj->z.a = 51;
obj->b = 43;
obj->c = 53;
/* pointer to existing entry */
struct test1 *obj1 = &obj->z;
struct test2 *obj2 = container_of(obj1, struct test2, z);
printf("obj2->b = %d
", obj2->b);
return EXIT_SUCCESS;
}
Note: Copying the code directly into your source.c file will also copies the invisible characters and finally you will left out with stray errors, i recommend you to type the code and that even becomes a practice.
for more information check out this : http://www.kroah.com/log/linux/container_of.html
Saturday, February 7, 2015
NFC on the iPhone 6 only works with Apple Pay
The Apple iPhone 6 and iPhone 6 Plus come with NFC connectivity that makes the Apple Pay service work. However, thats just about what the connectivity protocol will be used to, at least in the beginning. This is confirmed by an Apple spokesperson for Cult of Mac, who declined to reveal the companys future plans of additional uses of the NFC chip. Allegedly though, the company is considering
Read more »
Subscribe to:
Posts (Atom)