You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@celix.apache.org by GitBox <gi...@apache.org> on 2020/05/03 08:35:40 UTC
[GitHub] [celix] pnoltes commented on pull request #214: Fix data race in get/set bundle state
pnoltes commented on pull request #214:
URL: https://github.com/apache/celix/pull/214#issuecomment-623075033
If we introduce atomic, then I prefer that we use the c11 standard stuff for that.
This means update the top level cmake lists file to use -std=c11 instead of -std=gnu99 and
use the function in <stdatomic.h> instead of gcc builtins.
Something like:
```C
//bundle_private.h
...
#include <sdtatomic.h>
...
struct celix_bundle {
bundle_context_pt context;
char *symbolicName; //for debug
struct celix_bundle_activator *activator;
_Atomic(bundle_state_e) state;
void * handle;
bundle_archive_pt archive;
array_list_pt modules;
manifest_pt manifest;
celix_framework_t *framework;
};
//bundle.c
...
(*bundle)->state = ATOMIC_VAR_INIT(OSGI_FRAMEWORK_BUNDLE_INSTALLED);
...
state = atomic_load_explicit(&bundle->state, __ATOMIC_ACQUIRE);
...
atomic_store_explicit(&bundle->state, state, __ATOMIC_RELEASE);
...
```
This also means we bump the required compiler from gnu99 compatible to c11 compatible.
Seeing that it is 2020 I have no problem with that.
@abroekhuis, @rlenferink and @rbulter WDYT?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org