tests/tcg: Test shmat(NULL)

Add a small test to prevent regressions.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20240325192436.561154-5-iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
master
Ilya Leoshkevich 2024-03-25 20:23:02 +01:00 committed by Richard Henderson
parent fa527b44c2
commit 889cd5a8e2
1 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,38 @@
/*
* 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;
}