Project

General

Profile

Bug #3203

Don't assume pthread_t is a pointer

Added by tkusumi 4 months ago. Updated 3 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
08/30/2019
Due date:
% Done:

0%

Estimated time:

Description

A pthread_t variable doesn't need to be initialized with NULL prior to calling pthread_create(3).
This also isn't portable since pthread_t is an opaque type (i.e. may not be a pointer, and in fact it's not on Linux/glibc).

# grep "thread = NULL" sbin/hammer2 -rI
sbin/hammer2/subs.c: pthread_t thread = NULL;
sbin/hammer2/cmd_service.c: thread = NULL;
sbin/hammer2/cmd_service.c: thread = NULL;
sbin/hammer2/cmd_service.c: thread = NULL;
sbin/hammer2/cmd_service.c: conf->thread = NULL;
sbin/hammer2/cmd_service.c: conf->iocom_thread = NULL;
sbin/hammer2/cmd_service.c: thread = NULL;

It looks like above exists for this conditional below.
If this could be rewritten without testing pthread_t itself (it shouldn't be too), NULL initialization could be removed.

369 if (conf->thread == NULL) {
370 fprintf(stderr, "VOLCONF THREAD STARTED\n");
371 pthread_cond_init(&conf->cond, NULL);
372 pthread_create(&conf->thread, NULL,
373 hammer2_volconf_thread, (void *)conf);
374 }

History

#1

Updated by tkusumi 3 months ago

  • Status changed from New to Closed

Also available in: Atom PDF