[ovs-dev] [PATCH 02/26] list: New macro OVS_LIST_POISON for initializing a poisoned list.
Jarno Rajahalme
jrajahalme at nicira.com
Fri Jul 31 20:29:20 UTC 2015
Thanks!
Jarno
> On Jul 31, 2015, at 1:14 PM, Ben Pfaff <blp at nicira.com> wrote:
>
> On Fri, Jul 31, 2015 at 01:03:24PM -0700, Jarno Rajahalme wrote:
>>> On Jul 31, 2015, at 11:37 AM, Ben Pfaff <blp at nicira.com> wrote:
>>>
>>> On Fri, Jul 31, 2015 at 11:18:22AM -0700, Jarno Rajahalme wrote:
>>>> One question below,
>>>
>>> One answer below ;-)
>>>
>>>> Acked-by: Jarno Rajahalme <jrajahalme at nicira.com>
>>>
>>> Thanks.
>>>
>>>>> On Jul 29, 2015, at 11:42 PM, Ben Pfaff <blp at nicira.com> wrote:
>>>>>
>>>>> To be used in an upcoming commit.
>>>>>
>>>>> Signed-off-by: Ben Pfaff <blp at nicira.com>
>>>>> ---
>>>>> lib/list.h | 7 ++++++-
>>>>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/lib/list.h b/lib/list.h
>>>>> index 7ba1e35..c1b0891 100644
>>>>> --- a/lib/list.h
>>>>> +++ b/lib/list.h
>>>>> @@ -23,6 +23,11 @@
>>>>> #include "util.h"
>>>>> #include "openvswitch/list.h"
>>>>>
>>>>> +/* Initializer for a list with pointers that will (probably) cause segfaults if
>>>>> + * dereferenced and, better yet, show up clearly in a debugger. */
>>>>> +#define OVS_LIST_POISON { (void *) (uintptr_t) 0xccccccccccccccccULL, \
>>>>> + (void *) (uintptr_t) 0xccccccccccccccccULL }
>>>>> +
>>>>> static inline void list_init(struct ovs_list *);
>>>>> static inline void list_poison(struct ovs_list *);
>>>>>
>>>>> @@ -91,7 +96,7 @@ list_init(struct ovs_list *list)
>>>>> static inline void
>>>>> list_poison(struct ovs_list *list)
>>>>> {
>>>>> - memset(list, 0xcc, sizeof *list);
>>>>> + *list = (struct ovs_list) OVS_LIST_POISON;
>>>>
>>>> Could the cast be part of the macro?
>>>
>>> The short answer is "yes". Would you like it that way, then?
>>
>> If the compound literal can still be used as an initializer, then yes,
>> so that the macro can be used by itself in both situations, as an
>> initializer and as a compound literal in an assignment.
>
> It can be used both ways, so I changed this to:
>
> --8<--------------------------cut here-------------------------->8--
>
> From: Ben Pfaff <blp at nicira.com <mailto:blp at nicira.com>>
> Date: Fri, 31 Jul 2015 13:14:20 -0700
> Subject: [PATCH] list: New macro OVS_LIST_POISON for initializing a poisoned
> list.
>
> To be used in an upcoming commit.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com <mailto:blp at nicira.com>>
> Acked-by: Jarno Rajahalme <jrajahalme at nicira.com <mailto:jrajahalme at nicira.com>>
> ---
> lib/list.h | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/lib/list.h b/lib/list.h
> index 7ba1e35..5ad54b8 100644
> --- a/lib/list.h
> +++ b/lib/list.h
> @@ -23,6 +23,12 @@
> #include "util.h"
> #include "openvswitch/list.h"
>
> +/* "struct ovs_list" with pointers that will (probably) cause segfaults if
> + * dereferenced and, better yet, show up clearly in a debugger. */
> +#define OVS_LIST_POISON \
> + (struct ovs_list) { (void *) (uintptr_t) 0xccccccccccccccccULL, \
> + (void *) (uintptr_t) 0xccccccccccccccccULL }
> +
> static inline void list_init(struct ovs_list *);
> static inline void list_poison(struct ovs_list *);
>
> @@ -91,7 +97,7 @@ list_init(struct ovs_list *list)
> static inline void
> list_poison(struct ovs_list *list)
> {
> - memset(list, 0xcc, sizeof *list);
> + *list = OVS_LIST_POISON;
> }
>
> /* Inserts 'elem' just before 'before'. */
> --
> 2.1.3
More information about the dev
mailing list