cregit-Linux how code gets into the kernel

Release 4.14 tools/testing/selftests/membarrier/membarrier_test.c

// SPDX-License-Identifier: GPL-2.0

#define _GNU_SOURCE
#include <linux/membarrier.h>
#include <syscall.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>

#include "../kselftest.h"


static int sys_membarrier(int cmd, int flags) { return syscall(__NR_membarrier, cmd, flags); }

Contributors

PersonTokensPropCommitsCommitProp
Pranith Kumar22100.00%1100.00%
Total22100.00%1100.00%


static int test_membarrier_cmd_fail(void) { int cmd = -1, flags = 0; if (sys_membarrier(cmd, flags) != -1) { ksft_exit_fail_msg( "sys membarrier invalid command test: command = %d, flags = %d. Should fail, but passed\n", cmd, flags); } ksft_test_result_pass( "sys membarrier invalid command test: command = %d, flags = %d. Failed as expected\n", cmd, flags); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Pranith Kumar3158.49%125.00%
Shuah Khan1324.53%125.00%
Mathieu Desnoyers59.43%125.00%
Paul Elder47.55%125.00%
Total53100.00%4100.00%


static int test_membarrier_flags_fail(void) { int cmd = MEMBARRIER_CMD_QUERY, flags = 1; if (sys_membarrier(cmd, flags) != -1) { ksft_exit_fail_msg( "sys membarrier MEMBARRIER_CMD_QUERY invalid flags test: flags = %d. Should fail, but passed\n", flags); } ksft_test_result_pass( "sys membarrier MEMBARRIER_CMD_QUERY invalid flags test: flags = %d. Failed as expected\n", flags); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Mathieu Desnoyers3266.67%125.00%
Shuah Khan918.75%125.00%
Paul Elder48.33%125.00%
Pranith Kumar36.25%125.00%
Total48100.00%4100.00%


static int test_membarrier_success(void) { int cmd = MEMBARRIER_CMD_SHARED, flags = 0; const char *test_name = "sys membarrier MEMBARRIER_CMD_SHARED\n"; if (sys_membarrier(cmd, flags) != 0) { ksft_exit_fail_msg( "sys membarrier MEMBARRIER_CMD_SHARED test: flags = %d\n", flags); } ksft_test_result_pass( "sys membarrier MEMBARRIER_CMD_SHARED test: flags = %d\n", flags); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Pranith Kumar3055.56%125.00%
Shuah Khan1018.52%125.00%
Paul Elder712.96%125.00%
Mathieu Desnoyers712.96%125.00%
Total54100.00%4100.00%


static int test_membarrier(void) { int status; status = test_membarrier_cmd_fail(); if (status) return status; status = test_membarrier_flags_fail(); if (status) return status; status = test_membarrier_success(); if (status) return status; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Mathieu Desnoyers3570.00%133.33%
Pranith Kumar1224.00%133.33%
Shuah Khan36.00%133.33%
Total50100.00%3100.00%


static int test_membarrier_query(void) { int flags = 0, ret; ret = sys_membarrier(MEMBARRIER_CMD_QUERY, flags); if (ret < 0) { if (errno == ENOSYS) { /* * It is valid to build a kernel with * CONFIG_MEMBARRIER=n. However, this skips the tests. */ ksft_exit_skip( "sys membarrier (CONFIG_MEMBARRIER) is disabled.\n"); } ksft_exit_fail_msg("sys_membarrier() failed\n"); } if (!(ret & MEMBARRIER_CMD_SHARED)) ksft_exit_fail_msg("sys_membarrier is not supported.\n"); ksft_test_result_pass("sys_membarrier available\n"); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Mathieu Desnoyers3446.58%120.00%
Pranith Kumar1926.03%120.00%
Paul Elder1317.81%240.00%
Shuah Khan79.59%120.00%
Total73100.00%5100.00%


int main(int argc, char **argv) { ksft_print_header(); test_membarrier_query(); test_membarrier(); ksft_exit_pass(); }

Contributors

PersonTokensPropCommitsCommitProp
Pranith Kumar1664.00%125.00%
Shuah Khan312.00%125.00%
Paul Elder312.00%125.00%
Mathieu Desnoyers312.00%125.00%
Total25100.00%4100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Pranith Kumar15344.09%114.29%
Mathieu Desnoyers11733.72%228.57%
Shuah Khan4512.97%114.29%
Paul Elder318.93%228.57%
Greg Kroah-Hartman10.29%114.29%
Total347100.00%7100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.