brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 76b829c Raw
45 lines · cpp
1//===-- Unittests for prctl -----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "src/sys/prctl/prctl.h"10#include "test/UnitTest/ErrnoCheckingTest.h"11#include "test/UnitTest/ErrnoSetterMatcher.h"12#include <sys/prctl.h>13 14using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;15using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;16using LlvmLibcSysPrctlTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;17 18TEST_F(LlvmLibcSysPrctlTest, GetSetName) {19  char name[17];20  unsigned long name_addr = 0;21  ASSERT_THAT(LIBC_NAMESPACE::prctl(PR_GET_NAME, name_addr, 0, 0, 0),22              Fails(EFAULT, -1));23 24  name_addr = reinterpret_cast<unsigned long>("libc-test");25  ASSERT_THAT(LIBC_NAMESPACE::prctl(PR_SET_NAME, name_addr, 0, 0, 0),26              Succeeds());27 28  name_addr = reinterpret_cast<unsigned long>(name);29  ASSERT_THAT(LIBC_NAMESPACE::prctl(PR_GET_NAME, name_addr, 0, 0, 0),30              Succeeds());31  ASSERT_STREQ(name, "libc-test");32}33 34TEST_F(LlvmLibcSysPrctlTest, GetTHPDisable) {35  // Manually check errno since the return value logic here is not36  // covered in ErrnoSetterMatcher.37  // Note that PR_GET_THP_DISABLE is not supported by QEMU.38  int ret = LIBC_NAMESPACE::prctl(PR_GET_THP_DISABLE, 0, 0, 0, 0);39  ASSERT_ERRNO_SUCCESS();40  // PR_GET_THP_DISABLE return (as the function result) the current41  // setting of the "THP disable" flag for the calling thread, which42  // is either 1, if the flag is set; or 0, if it is not.43  ASSERT_TRUE(ret == 0 || ret == 1);44}45