qemu-e2k/tests/tcg/multiarch/linux/linux-shmat-null.c

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

39 lines
758 B
C
Raw Permalink Normal View History

/*
* Test shmat(NULL).
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <assert.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main(void)
{
int shmid;
char *p;
int err;
/* Create, attach and intialize shared memory. */
shmid = shmget(IPC_PRIVATE, 1, IPC_CREAT | 0600);
assert(shmid != -1);
p = shmat(shmid, NULL, 0);
assert(p != (void *)-1);
*p = 42;
/* Reattach, check that the value is still there. */
err = shmdt(p);
assert(err == 0);
p = shmat(shmid, NULL, 0);
assert(p != (void *)-1);
assert(*p == 42);
/* Detach. */
err = shmdt(p);
assert(err == 0);
err = shmctl(shmid, IPC_RMID, NULL);
assert(err == 0);
return EXIT_SUCCESS;
}