* Re: [Xenomai-core] [Xenomai-git] Jan Kiszka : Fix remapping of global sem_heap on fork
[not found] <E1NfybE-0003dg-9e@domain.hid>
@ 2010-02-12 17:23 ` Gilles Chanteperdrix
2010-02-12 17:41 ` Jan Kiszka
0 siblings, 1 reply; 2+ messages in thread
From: Gilles Chanteperdrix @ 2010-02-12 17:23 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai core
GIT version control wrote:
> Module: xenomai-jki
> Branch: for-upstream
> Commit: 40e5b366397db3dde0ebde861a739dc2cd624b5a
> URL: http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=40e5b366397db3dde0ebde861a739dc2cd624b5a
>
> Author: Jan Kiszka <jan.kiszka@domain.hid>
> Date: Fri Feb 12 17:40:09 2010 +0100
>
> Fix remapping of global sem_heap on fork
>
> As xeno_init_sem_heaps might be called multiple times even without fork,
> we must not remap the global heap here. Register an atfork handler
> instead that handles this case and simple reject multiple heap creation
> requests for the same process.
>
> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid>
>
> ---
>
> src/skins/common/sem_heap.c | 29 ++++++++++++++++++-----------
> 1 files changed, 18 insertions(+), 11 deletions(-)
>
> diff --git a/src/skins/common/sem_heap.c b/src/skins/common/sem_heap.c
> index 89f325a..12b256f 100644
> --- a/src/skins/common/sem_heap.c
> +++ b/src/skins/common/sem_heap.c
> @@ -1,6 +1,6 @@
> #include <stdio.h>
> #include <stdlib.h>
> -
> +#include <pthread.h>
> #include <unistd.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> @@ -65,24 +65,31 @@ static void unmap_sem_heap(unsigned long heap_addr, unsigned shared)
> munmap((void *) heap_addr, hinfo.size);
> }
>
> +static void remap_on_fork(void)
> +{
> + unmap_sem_heap(xeno_sem_heap[0], 0);
> +
> + if (xeno_sem_heap[0] == (unsigned long) MAP_FAILED) {
> + perror("Xenomai: mmap(local sem heap)");
> + exit(EXIT_FAILURE);
> + }
Looks bogus to me. Where do the remap occur ?
Looks like your test case does not try forking.
--
Gilles.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Xenomai-core] [Xenomai-git] Jan Kiszka : Fix remapping of global sem_heap on fork
2010-02-12 17:23 ` [Xenomai-core] [Xenomai-git] Jan Kiszka : Fix remapping of global sem_heap on fork Gilles Chanteperdrix
@ 2010-02-12 17:41 ` Jan Kiszka
0 siblings, 0 replies; 2+ messages in thread
From: Jan Kiszka @ 2010-02-12 17:41 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai core
Gilles Chanteperdrix wrote:
> GIT version control wrote:
>> Module: xenomai-jki
>> Branch: for-upstream
>> Commit: 40e5b366397db3dde0ebde861a739dc2cd624b5a
>> URL: http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=40e5b366397db3dde0ebde861a739dc2cd624b5a
>>
>> Author: Jan Kiszka <jan.kiszka@domain.hid>
>> Date: Fri Feb 12 17:40:09 2010 +0100
>>
>> Fix remapping of global sem_heap on fork
>>
>> As xeno_init_sem_heaps might be called multiple times even without fork,
>> we must not remap the global heap here. Register an atfork handler
>> instead that handles this case and simple reject multiple heap creation
>> requests for the same process.
>>
>> Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid>
>>
>> ---
>>
>> src/skins/common/sem_heap.c | 29 ++++++++++++++++++-----------
>> 1 files changed, 18 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/skins/common/sem_heap.c b/src/skins/common/sem_heap.c
>> index 89f325a..12b256f 100644
>> --- a/src/skins/common/sem_heap.c
>> +++ b/src/skins/common/sem_heap.c
>> @@ -1,6 +1,6 @@
>> #include <stdio.h>
>> #include <stdlib.h>
>> -
>> +#include <pthread.h>
>> #include <unistd.h>
>> #include <sys/types.h>
>> #include <sys/stat.h>
>> @@ -65,24 +65,31 @@ static void unmap_sem_heap(unsigned long heap_addr, unsigned shared)
>> munmap((void *) heap_addr, hinfo.size);
>> }
>>
>> +static void remap_on_fork(void)
>> +{
>> + unmap_sem_heap(xeno_sem_heap[0], 0);
>> +
>> + if (xeno_sem_heap[0] == (unsigned long) MAP_FAILED) {
>> + perror("Xenomai: mmap(local sem heap)");
>> + exit(EXIT_FAILURE);
>> + }
>
> Looks bogus to me. Where do the remap occur ?
> Looks like your test case does not try forking.
>
Yep, copy&paste error. Fixed.
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-02-12 17:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <E1NfybE-0003dg-9e@domain.hid>
2010-02-12 17:23 ` [Xenomai-core] [Xenomai-git] Jan Kiszka : Fix remapping of global sem_heap on fork Gilles Chanteperdrix
2010-02-12 17:41 ` Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.