[LEDE-DEV] [PATCH] procd: Remove unnecessary memset calls.

Eric Luehrsen ericluehrsen at gmail.com
Sun Nov 12 21:10:30 PST 2017


On 11/12/2017 10:53 PM, rosenp at gmail.com wrote:
> Tested compile size difference. Saves 32 bytes. ¯\_(ツ)_/¯
>
> On Tue, 2017-11-07 at 12:05 -0800, Rosen Penev wrote:
>> Changes allocation to calloc and {} as needed.
>>
>> Signed-off-by: Rosen Penev <rosenp at gmail.com>
>> ---
>>   inittab.c      | 6 ++----
>>   plug/hotplug.c | 7 ++-----
>>   2 files changed, 4 insertions(+), 9 deletions(-)
>>
>> diff --git a/inittab.c b/inittab.c
>> index 21172f7..c27c324 100644
>> --- a/inittab.c
>> +++ b/inittab.c
>> @@ -284,8 +284,7 @@ void procd_inittab(void)
>>   
>>   	regcomp(&pat_inittab, "([a-zA-Z0-9]*):([a-zA-Z0-9]*):([a-zA-
>> Z0-9]*):(.*)", REG_EXTENDED);
>>   	line = malloc(LINE_LEN);
>> -	a = malloc(sizeof(struct init_action));
>> -	memset(a, 0, sizeof(struct init_action));
>> +	a = calloc(1, sizeof(struct init_action));
>>   
>>   	while (fgets(line, LINE_LEN, fp)) {
>>   		char *tags[TAG_PROCESS + 1];
>> @@ -322,8 +321,7 @@ void procd_inittab(void)
>>   		if (add_action(a, tags[TAG_ACTION]))
>>   			continue;
>>   		line = malloc(LINE_LEN);
>> -		a = malloc(sizeof(struct init_action));
>> -		memset(a, 0, sizeof(struct init_action));
>> +		a = calloc(1, sizeof(struct init_action));
>>   	}
>>   
>>   	fclose(fp);
>> diff --git a/plug/hotplug.c b/plug/hotplug.c
>> index 49c177f..6e55f67 100644
>> --- a/plug/hotplug.c
>> +++ b/plug/hotplug.c
>> @@ -434,12 +434,10 @@ static void handle_button_complete(struct
>> blob_attr *msg, struct blob_attr *data
>>   	if (!name)
>>   		return;
>>   
>> -	b = malloc(sizeof(*b));
>> +	b = calloc(1, sizeof(*b));
>>   	if (!b)
>>   		return;
>>   
>> -	memset(b, 0, sizeof(*b));
>> -
>>   	b->data = malloc(blob_pad_len(data));
>>   	b->name = strdup(name);
>>   	b->seen = timeout;
>> @@ -584,11 +582,10 @@ void hotplug_last_event(uloop_timeout_handler
>> handler)
>>   
>>   void hotplug(char *rules)
>>   {
>> -	struct sockaddr_nl nls;
>> +	struct sockaddr_nl nls = {};
>>   	int nlbufsize = 512 * 1024;
>>   
>>   	rule_file = strdup(rules);
>> -	memset(&nls,0,sizeof(struct sockaddr_nl));
>>   	nls.nl_family = AF_NETLINK;
>>   	nls.nl_pid = getpid();
>>   	nls.nl_groups = -1;
>
wrt. hotplug() -- When a fixed size aggregate will live only on the 
stack, initializing it is faster than calling allocation function(s). 
Not that any _one_ of them would be significant, but as a coding pattern 
it can add up. Even if you permit in-line standard functions, then there 
still are presumed behaviors of the function which will likely be 
implemented. Initialization on the stack will not incur the overhead.

- Eric



More information about the Lede-dev mailing list