From bevenson at melinkcorp.com Tue Jan 24 11:27:11 2012 From: bevenson at melinkcorp.com (Bryan Evenson) Date: Tue, 24 Jan 2012 14:27:11 -0500 Subject: [splint-discuss] Proper annotations for linked list implementation Message-ID: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> I'm using splint on some userspace application code that will run in an embedded Linux environment. I borrowed the kernel linked list implementation (list.h) for use in userspace. The linked list works great, but it's giving me a bunch of issues for checking with splint. I think if I saw what the annotations were that was used for list.h that is used by the unixlib I'd be able to solve a lot of my problems. Does anyone know where I can find what the annotation for list.h should look like? Thanks, Bryan From bevenson at melinkcorp.com Thu Jan 26 06:38:51 2012 From: bevenson at melinkcorp.com (Bryan Evenson) Date: Thu, 26 Jan 2012 09:38:51 -0500 Subject: [splint-discuss] Proper annotations for linked list implementation In-Reply-To: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> References: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> Message-ID: <91586D499ADFD74FBCFB8425266A5DE401249528FDBD@pluto.melinkcorp.local> There's one specific issue I'm really having with splint's parsing, and it's with the list_for_each_entry macro. For reference, the macro is defined as: /** * list_for_each_entry - iterate over list of given type * @pos: the type * to use as a loop cursor. * @head: the head for your list. * @member: the name of the list_struct within the struct. */ #define list_for_each_entry(pos, head, member) \ for (pos = list_entry((head)->next, typeof(*pos), member); \ &pos->member != (head); \ pos = list_entry(pos->member.next, typeof(*pos), member)) where list_entry is defined as: /** * list_entry - get the struct for this entry * @ptr: the &struct list_head pointer. * @type: the type of the struct this is embedded in. * @member: the name of the list_struct within the struct. */ #define list_entry(ptr, type, member) \ container_of(ptr, type, member) and where container_of is defined as: /** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *local_mptr = (ptr); \ (type *)( (char *)local_mptr - offset_of(type,member) );}) And finally where offset of is defined as: #define offset_of(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) When I try to use list_for_each_entry, splint crashes with the following error: *** Fatal bug: usymtab_lookup: not found: *local_mptr* *** Last code point: exprNode.c:10317 *** Previous code point: exprNode.c:10317 *** Please report bug to submit at bugs.debian.org (via reportbug) *** I'm not quite sure what it doesn't like about the macro expansion and the usage of local_mptr. If I instead use list_for_each and then use list_entry inside my loop, splint deals with that okay. So it doesn't have any issue in itself with the list_entry or container_of macros, but it doesn't like it when these expand out to be part of the for loop statement. I could just use list_for_each, but I'd hate to avoid adding more cumbersome code just to make splint happy. Any tips? Thanks, Bryan -----Original Message----- From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Bryan Evenson Sent: Tuesday, January 24, 2012 2:27 PM To: splint-discuss at mail.cs.virginia.edu Subject: [splint-discuss] Proper annotations for linked list implementation I'm using splint on some userspace application code that will run in an embedded Linux environment. I borrowed the kernel linked list implementation (list.h) for use in userspace. The linked list works great, but it's giving me a bunch of issues for checking with splint. I think if I saw what the annotations were that was used for list.h that is used by the unixlib I'd be able to solve a lot of my problems. Does anyone know where I can find what the annotation for list.h should look like? Thanks, Bryan _______________________________________________ splint-discuss mailing list splint-discuss at mail.cs.virginia.edu http://www.cs.virginia.edu/mailman/listinfo/splint-discuss From sasikanth.v19 at gmail.com Thu Jan 26 09:22:10 2012 From: sasikanth.v19 at gmail.com (Sasikanth) Date: Thu, 26 Jan 2012 22:52:10 +0530 Subject: [splint-discuss] Proper annotations for linked list implementation In-Reply-To: <91586D499ADFD74FBCFB8425266A5DE401249528FDBD@pluto.melinkcorp.local> References: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> <91586D499ADFD74FBCFB8425266A5DE401249528FDBD@pluto.melinkcorp.local> Message-ID: On Thu, Jan 26, 2012 at 8:08 PM, Bryan Evenson wrote: > There's one specific issue I'm really having with splint's parsing, and > it's with the list_for_each_entry macro. For reference, the macro is > defined as: > > /** > * list_for_each_entry - iterate over list of given type > * @pos: the type * to use as a loop cursor. > * @head: the head for your list. > * @member: the name of the list_struct within the struct. > */ > #define list_for_each_entry(pos, head, member) \ > for (pos = list_entry((head)->next, typeof(*pos), member); \ > &pos->member != (head); \ > pos = list_entry(pos->member.next, typeof(*pos), member)) > > where list_entry is defined as: > /** > * list_entry - get the struct for this entry > * @ptr: the &struct list_head pointer. > * @type: the type of the struct this is embedded in. > * @member: the name of the list_struct within the struct. > */ > #define list_entry(ptr, type, member) \ > container_of(ptr, type, member) > > and where container_of is defined as: > /** > * container_of - cast a member of a structure out to the containing > structure > * @ptr: the pointer to the member. > * @type: the type of the container struct this is embedded in. > * @member: the name of the member within the struct. > * > */ > #define container_of(ptr, type, member) ({ \ > const typeof( ((type *)0)->member ) *local_mptr = (ptr); \ > (type *)( (char *)local_mptr - offset_of(type,member) );}) > > And finally where offset of is defined as: > #define offset_of(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) > > When I try to use list_for_each_entry, splint crashes with the following > error: > *** Fatal bug: usymtab_lookup: not found: *local_mptr* > *** Last code point: exprNode.c:10317 > *** Previous code point: exprNode.c:10317 > *** Please report bug to submit at bugs.debian.org (via reportbug) *** > > I'm not quite sure what it doesn't like about the macro expansion and the > usage of local_mptr. If I instead use list_for_each and then use > list_entry inside my loop, splint deals with that okay. So it doesn't have > any issue in itself with the list_entry or container_of macros, but it > doesn't like it when these expand out to be part of the for loop statement. > I could just use list_for_each, but I'd hate to avoid adding more > cumbersome code just to make splint happy. Any tips? > > I think the problem is not about the macro expansion its with typeof. typeof is not a standard one and its GCC specific extension, Splint may not understand typeof. Since doesn't understand typeof it was not able to define a variable local_mptr . > Thanks, > Bryan > > -----Original Message----- > From: splint-discuss-bounces at cs.virginia.edu [mailto: > splint-discuss-bounces at cs.virginia.edu] On Behalf Of Bryan Evenson > Sent: Tuesday, January 24, 2012 2:27 PM > To: splint-discuss at mail.cs.virginia.edu > Subject: [splint-discuss] Proper annotations for linked list implementation > > I'm using splint on some userspace application code that will run in an > embedded Linux environment. I borrowed the kernel linked list > implementation (list.h) for use in userspace. The linked list works great, > but it's giving me a bunch of issues for checking with splint. I think if > I saw what the annotations were that was used for list.h that is used by > the unixlib I'd be able to solve a lot of my problems. Does anyone know > where I can find what the annotation for list.h should look like? > > Thanks, > Bryan > > _______________________________________________ > splint-discuss mailing list > splint-discuss at mail.cs.virginia.edu > http://www.cs.virginia.edu/mailman/listinfo/splint-discuss > > _______________________________________________ > splint-discuss mailing list > splint-discuss at mail.cs.virginia.edu > http://www.cs.virginia.edu/mailman/listinfo/splint-discuss > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.cs.virginia.edu/pipermail/splint-discuss/attachments/20120126/2a6406c2/attachment.html From bevenson at melinkcorp.com Thu Jan 26 13:44:53 2012 From: bevenson at melinkcorp.com (Bryan Evenson) Date: Thu, 26 Jan 2012 16:44:53 -0500 Subject: [splint-discuss] Proper annotations for linked list implementation In-Reply-To: References: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> <91586D499ADFD74FBCFB8425266A5DE401249528FDBD@pluto.melinkcorp.local> Message-ID: <91586D499ADFD74FBCFB8425266A5DE40124955D0A0D@pluto.melinkcorp.local> I made a few changes, but I'm still getting the same errors. I expanded out the list_for_each_entry macro (well, Eclipse's mouse-over macro expansion did) and copied that in place of my list_for_each_entry call. I then changed all references of typeof to __typeof__ just in case Splint was having issues with typeof not being defined. I still get the error about local_mptr not found. I also tried annotating the macros with /*@notfunction@*/, and that didn't change my results either. I do find it odd that it works just fine when the list_entry macro doesn't end up in the for loop statement, which leads me to think that Splint has no issue with typeof. Anything else I could put up that would be helpful? Thanks, Bryan From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Sasikanth Sent: Thursday, January 26, 2012 12:22 PM To: Discussions about the Splint annotation-assisted static analysis project Subject: Re: [splint-discuss] Proper annotations for linked list implementation On Thu, Jan 26, 2012 at 8:08 PM, Bryan Evenson wrote: There's one specific issue I'm really having with splint's parsing, and it's with the list_for_each_entry macro. ?For reference, the macro is defined as: /** ?* list_for_each_entry ?- ? iterate over list of given type ?* @pos: ? ?the type * to use as a loop cursor. ?* @head: ? the head for your list. ?* @member: the name of the list_struct within the struct. ?*/ #define list_for_each_entry(pos, head, member) ? ? ? ? ? ? ?\ ? ?for (pos = list_entry((head)->next, typeof(*pos), member); ?\ ? ? ? ? &pos->member != (head); ? ?\ ? ? ? ? pos = list_entry(pos->member.next, typeof(*pos), member)) where list_entry is defined as: /** ?* list_entry - get the struct for this entry ?* @ptr: ? ?the &struct list_head pointer. ?* @type: ? the type of the struct this is embedded in. ?* @member: the name of the list_struct within the struct. ?*/ #define list_entry(ptr, type, member) \ ? ?container_of(ptr, type, member) and where container_of is defined as: /** ?* container_of - cast a member of a structure out to the containing structure ?* @ptr: ? ?the pointer to the member. ?* @type: ? the type of the container struct this is embedded in. ?* @member: the name of the member within the struct. ?* ?*/ #define container_of(ptr, type, member) ({ ? ? ? ? ?\ ? ?const typeof( ((type *)0)->member ) *local_mptr = (ptr); ? ?\ ? ?(type *)( (char *)local_mptr - offset_of(type,member) );}) And finally where offset of is defined as: #define offset_of(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) When I try to use list_for_each_entry, splint crashes with the following error: *** Fatal bug: usymtab_lookup: not found: *local_mptr* *** Last code point: exprNode.c:10317 *** Previous code point: exprNode.c:10317 ? ? *** Please report bug to submit at bugs.debian.org (via reportbug) *** I'm not quite sure what it doesn't like about the macro expansion and the usage of local_mptr. ?If I instead use list_for_each and then use list_entry inside my loop, splint deals with that okay. ?So it doesn't have any issue in itself with the list_entry or container_of macros, but it doesn't like it when these expand out to be part of the for loop statement. ?I could just use list_for_each, but I'd hate to avoid adding more cumbersome code just to make splint happy. ?Any tips? ? ?? I think the problem is not? about the macro expansion its with typeof. typeof is not a standard one and its GCC specific extension, Splint may not understand typeof. Since doesn't understand typeof it was not able to define a variable local_mptr . Thanks, Bryan -----Original Message----- From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Bryan Evenson Sent: Tuesday, January 24, 2012 2:27 PM To: splint-discuss at mail.cs.virginia.edu Subject: [splint-discuss] Proper annotations for linked list implementation I'm using splint on some userspace application code that will run in an embedded Linux environment. ?I borrowed the kernel linked list implementation (list.h) for use in userspace. ?The linked list works great, but it's giving me a bunch of issues for checking with splint. ?I think if I saw what the annotations were that was used for list.h that is used by the unixlib I'd be able to solve a lot of my problems. ?Does anyone know where I can find what the annotation for list.h should look like? Thanks, Bryan _______________________________________________ splint-discuss mailing list splint-discuss at mail.cs.virginia.edu http://www.cs.virginia.edu/mailman/listinfo/splint-discuss _______________________________________________ splint-discuss mailing list splint-discuss at mail.cs.virginia.edu http://www.cs.virginia.edu/mailman/listinfo/splint-discuss From bevenson at melinkcorp.com Fri Jan 27 05:28:59 2012 From: bevenson at melinkcorp.com (Bryan Evenson) Date: Fri, 27 Jan 2012 08:28:59 -0500 Subject: [splint-discuss] Proper annotations for linked list implementation In-Reply-To: <91586D499ADFD74FBCFB8425266A5DE40124955D0A0D@pluto.melinkcorp.local> References: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> <91586D499ADFD74FBCFB8425266A5DE401249528FDBD@pluto.melinkcorp.local> <91586D499ADFD74FBCFB8425266A5DE40124955D0A0D@pluto.melinkcorp.local> Message-ID: <91586D499ADFD74FBCFB8425266A5DE40124955D0B1A@pluto.melinkcorp.local> I think I have a better clue as to what may be going wrong, but I'm not sure what to do about it. The error message from Splint occurs on the closing bracket of the list_for_each_entry loop. I believe the issue is that the variable local_mptr scope is only within the bounds of the for loop statement, but local_mptr is used for iterating the loop. So Splint in its parsing is performing some checks on the loop iterator at a point where local_mptr no longer exists. I think the answer is to make use of iterators with Splint annotations for the list_for_each_entry definition. However, I've read through this section of the Splint manual several times and I still don't understand how they work. Any pointers on this front would be greatly appreciated. -Bryan -----Original Message----- From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Bryan Evenson Sent: Thursday, January 26, 2012 4:45 PM To: Discussions about the Splint annotation-assisted static analysis project Subject: Re: [splint-discuss] Proper annotations for linked list implementation I made a few changes, but I'm still getting the same errors. I expanded out the list_for_each_entry macro (well, Eclipse's mouse-over macro expansion did) and copied that in place of my list_for_each_entry call. I then changed all references of typeof to __typeof__ just in case Splint was having issues with typeof not being defined. I still get the error about local_mptr not found. I also tried annotating the macros with /*@notfunction@*/, and that didn't change my results either. I do find it odd that it works just fine when the list_entry macro doesn't end up in the for loop statement, which leads me to think that Splint has no issue with typeof. Anything else I could put up that would be helpful? Thanks, Bryan From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Sasikanth Sent: Thursday, January 26, 2012 12:22 PM To: Discussions about the Splint annotation-assisted static analysis project Subject: Re: [splint-discuss] Proper annotations for linked list implementation On Thu, Jan 26, 2012 at 8:08 PM, Bryan Evenson wrote: There's one specific issue I'm really having with splint's parsing, and it's with the list_for_each_entry macro. ?For reference, the macro is defined as: /** ?* list_for_each_entry ?- ? iterate over list of given type ?* @pos: ? ?the type * to use as a loop cursor. ?* @head: ? the head for your list. ?* @member: the name of the list_struct within the struct. ?*/ #define list_for_each_entry(pos, head, member) ? ? ? ? ? ? ?\ ? ?for (pos = list_entry((head)->next, typeof(*pos), member); ?\ ? ? ? ? &pos->member != (head); ? ?\ ? ? ? ? pos = list_entry(pos->member.next, typeof(*pos), member)) where list_entry is defined as: /** ?* list_entry - get the struct for this entry ?* @ptr: ? ?the &struct list_head pointer. ?* @type: ? the type of the struct this is embedded in. ?* @member: the name of the list_struct within the struct. ?*/ #define list_entry(ptr, type, member) \ ? ?container_of(ptr, type, member) and where container_of is defined as: /** ?* container_of - cast a member of a structure out to the containing structure ?* @ptr: ? ?the pointer to the member. ?* @type: ? the type of the container struct this is embedded in. ?* @member: the name of the member within the struct. ?* ?*/ #define container_of(ptr, type, member) ({ ? ? ? ? ?\ ? ?const typeof( ((type *)0)->member ) *local_mptr = (ptr); ? ?\ ? ?(type *)( (char *)local_mptr - offset_of(type,member) );}) And finally where offset of is defined as: #define offset_of(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) When I try to use list_for_each_entry, splint crashes with the following error: *** Fatal bug: usymtab_lookup: not found: *local_mptr* *** Last code point: exprNode.c:10317 *** Previous code point: exprNode.c:10317 ? ? *** Please report bug to submit at bugs.debian.org (via reportbug) *** I'm not quite sure what it doesn't like about the macro expansion and the usage of local_mptr. ?If I instead use list_for_each and then use list_entry inside my loop, splint deals with that okay. ?So it doesn't have any issue in itself with the list_entry or container_of macros, but it doesn't like it when these expand out to be part of the for loop statement. ?I could just use list_for_each, but I'd hate to avoid adding more cumbersome code just to make splint happy. ?Any tips? ? ?? I think the problem is not? about the macro expansion its with typeof. typeof is not a standard one and its GCC specific extension, Splint may not understand typeof. Since doesn't understand typeof it was not able to define a variable local_mptr . Thanks, Bryan -----Original Message----- From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Bryan Evenson Sent: Tuesday, January 24, 2012 2:27 PM To: splint-discuss at mail.cs.virginia.edu Subject: [splint-discuss] Proper annotations for linked list implementation I'm using splint on some userspace application code that will run in an embedded Linux environment. ?I borrowed the kernel linked list implementation (list.h) for use in userspace. ?The linked list works great, but it's giving me a bunch of issues for checking with splint. ?I think if I saw what the annotations were that was used for list.h that is used by the unixlib I'd be able to solve a lot of my problems. ?Does anyone know where I can find what the annotation for list.h should look like? Thanks, Bryan _______________________________________________ splint-discuss mailing list splint-discuss at mail.cs.virginia.edu http://www.cs.virginia.edu/mailman/listinfo/splint-discuss _______________________________________________ splint-discuss mailing list splint-discuss at mail.cs.virginia.edu http://www.cs.virginia.edu/mailman/listinfo/splint-discuss _______________________________________________ splint-discuss mailing list splint-discuss at mail.cs.virginia.edu http://www.cs.virginia.edu/mailman/listinfo/splint-discuss From sasikanth.v19 at gmail.com Fri Jan 27 05:30:19 2012 From: sasikanth.v19 at gmail.com (Sasikanth) Date: Fri, 27 Jan 2012 19:00:19 +0530 Subject: [splint-discuss] Proper annotations for linked list implementation In-Reply-To: <91586D499ADFD74FBCFB8425266A5DE40124955D0A0D@pluto.melinkcorp.local> References: <91586D499ADFD74FBCFB8425266A5DE401249528F789@pluto.melinkcorp.local> <91586D499ADFD74FBCFB8425266A5DE401249528FDBD@pluto.melinkcorp.local> <91586D499ADFD74FBCFB8425266A5DE40124955D0A0D@pluto.melinkcorp.local> Message-ID: <1327671019.13428.5.camel@localhost.localdomain> I did little analysis, The macro is getting expanded as for ( expr A; expr B; expr C) Splint facing problem only with expression C (expr A and expr C 99.99% same), I really don't understand why splint facing the problem only with expr C. I will try to tweak more into it today. meanwhile If you are fine in modifying the container_of macro, you can change the container_of macro as mentioned below. #ifndef container_of #define container_of(obj, type, memb) \ ((type *)(((char *)obj) - offset_of(type, memb))) #endif Thanks Sasi On Thu, 2012-01-26 at 16:44 -0500, Bryan Evenson wrote: > I made a few changes, but I'm still getting the same errors. I expanded out the list_for_each_entry macro (well, Eclipse's mouse-over macro expansion did) and copied that in place of my list_for_each_entry call. I then changed all references of typeof to __typeof__ just in case Splint was having issues with typeof not being defined. I still get the error about local_mptr not found. I also tried annotating the macros with /*@notfunction@*/, and that didn't change my results either. I do find it odd that it works just fine when the list_entry macro doesn't end up in the for loop statement, which leads me to think that Splint has no issue with typeof. Anything else I could put up that would be helpful? > > Thanks, > Bryan > > > From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Sasikanth > Sent: Thursday, January 26, 2012 12:22 PM > To: Discussions about the Splint annotation-assisted static analysis project > Subject: Re: [splint-discuss] Proper annotations for linked list implementation > > > On Thu, Jan 26, 2012 at 8:08 PM, Bryan Evenson wrote: > There's one specific issue I'm really having with splint's parsing, and it's with the list_for_each_entry macro. For reference, the macro is defined as: > > /** > * list_for_each_entry - iterate over list of given type > * @pos: the type * to use as a loop cursor. > * @head: the head for your list. > * @member: the name of the list_struct within the struct. > */ > #define list_for_each_entry(pos, head, member) \ > for (pos = list_entry((head)->next, typeof(*pos), member); \ > &pos->member != (head); \ > pos = list_entry(pos->member.next, typeof(*pos), member)) > > where list_entry is defined as: > /** > * list_entry - get the struct for this entry > * @ptr: the &struct list_head pointer. > * @type: the type of the struct this is embedded in. > * @member: the name of the list_struct within the struct. > */ > #define list_entry(ptr, type, member) \ > container_of(ptr, type, member) > > and where container_of is defined as: > /** > * container_of - cast a member of a structure out to the containing structure > * @ptr: the pointer to the member. > * @type: the type of the container struct this is embedded in. > * @member: the name of the member within the struct. > * > */ > #define container_of(ptr, type, member) ({ \ > const typeof( ((type *)0)->member ) *local_mptr = (ptr); \ > (type *)( (char *)local_mptr - offset_of(type,member) );}) > > And finally where offset of is defined as: > #define offset_of(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) > > When I try to use list_for_each_entry, splint crashes with the following error: > *** Fatal bug: usymtab_lookup: not found: *local_mptr* > *** Last code point: exprNode.c:10317 > *** Previous code point: exprNode.c:10317 > *** Please report bug to submit at bugs.debian.org (via reportbug) *** > > I'm not quite sure what it doesn't like about the macro expansion and the usage of local_mptr. If I instead use list_for_each and then use list_entry inside my loop, splint deals with that okay. So it doesn't have any issue in itself with the list_entry or container_of macros, but it doesn't like it when these expand out to be part of the for loop statement. I could just use list_for_each, but I'd hate to avoid adding more cumbersome code just to make splint happy. Any tips? > I think the problem is not about the macro expansion its with typeof. typeof is not a standard one and its GCC specific extension, Splint may not understand typeof. Since doesn't understand typeof it was not able to define a variable local_mptr . > Thanks, > Bryan > > -----Original Message----- > From: splint-discuss-bounces at cs.virginia.edu [mailto:splint-discuss-bounces at cs.virginia.edu] On Behalf Of Bryan Evenson > Sent: Tuesday, January 24, 2012 2:27 PM > To: splint-discuss at mail.cs.virginia.edu > Subject: [splint-discuss] Proper annotations for linked list implementation > > I'm using splint on some userspace application code that will run in an embedded Linux environment. I borrowed the kernel linked list implementation (list.h) for use in userspace. The linked list works great, but it's giving me a bunch of issues for checking with splint. I think if I saw what the annotations were that was used for list.h that is used by the unixlib I'd be able to solve a lot of my problems. Does anyone know where I can find what the annotation for list.h should look like? > > Thanks, > Bryan > > _______________________________________________ > splint-discuss mailing list > splint-discuss at mail.cs.virginia.edu > http://www.cs.virginia.edu/mailman/listinfo/splint-discuss > > _______________________________________________ > splint-discuss mailing list > splint-discuss at mail.cs.virginia.edu > http://www.cs.virginia.edu/mailman/listinfo/splint-discuss > > > _______________________________________________ > splint-discuss mailing list > splint-discuss at mail.cs.virginia.edu > http://www.cs.virginia.edu/mailman/listinfo/splint-discuss