blob: 94eaaec371a08fa7303bc28f6de5ae0270a0cf20 [file] [log] [blame]
/*
* 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;
}