Hi All,

I am porting a Windows device driver to Linux.

I defined a macro for CONTANING_RECORD  like
#define CONTAINING_RECORD(ptr, type, member) list_entry((ptr), (type),
(member))

When i compiled my module, i got following errors

*$ make 2>&1 | grep 1132*
alloc.c:1132: error: expected expression before ‘)’ token
alloc.c:1132: error: expected identifier before ‘(’ token
alloc.c:1132: warning: type defaults to ‘int’ in declaration of ‘__mptr’
alloc.c:1132: warning: initialization from incompatible pointer type
alloc.c:1132: error: expected expression before ‘)’ token


Corresponding code snippet

1130     list_for_each(Entry, &Ptr->ActiveList[target]) {
1131
1132         node = CONTAINING_RECORD(Entry, IFTL_EU, link);
1133
1134         die = DIE_FROM_EU(node->eu);
1135
1136         if (Ptr->LastDie != die) {
1137             Ptr->LastDie = die;
1138             break;
1139         }
1140     }



Then I changed macro with
#define CONTAINING_RECORD list_entry
*$ make 2>&1 | grep 1132
$

*And it worked, but I am not getting what was problem with the first macro
definition.

Thanks and Regards,
Prasad

Reply via email to