| // SPDX-License-Identifier: MIT |
| /* |
| * Copyright © 2020 Intel Corporation |
| */ |
| |
| /* Just a quick and causal check of the shmem_utils API */ |
| |
| static int igt_shmem_basic(void *ignored) |
| { |
| u32 datum = 0xdeadbeef, result; |
| struct file *file; |
| u32 *map; |
| int err; |
| |
| file = shmem_create_from_data("mock", &datum, sizeof(datum)); |
| if (IS_ERR(file)) |
| return PTR_ERR(file); |
| |
| result = 0; |
| err = shmem_read(file, 0, &result, sizeof(result)); |
| if (err) |
| goto out_file; |
| |
| if (result != datum) { |
| pr_err("Incorrect read back from shmemfs: %x != %x\n", |
| result, datum); |
| err = -EINVAL; |
| goto out_file; |
| } |
| |
| result = 0xc0ffee; |
| err = shmem_write(file, 0, &result, sizeof(result)); |
| if (err) |
| goto out_file; |
| |
| map = shmem_pin_map(file); |
| if (!map) { |
| err = -ENOMEM; |
| goto out_file; |
| } |
| |
| if (*map != result) { |
| pr_err("Incorrect read back via mmap of last write: %x != %x\n", |
| *map, result); |
| err = -EINVAL; |
| goto out_map; |
| } |
| |
| out_map: |
| shmem_unpin_map(file, map); |
| out_file: |
| fput(file); |
| return err; |
| } |
| |
| int shmem_utils_mock_selftests(void) |
| { |
| static const struct i915_subtest tests[] = { |
| SUBTEST(igt_shmem_basic), |
| }; |
| |
| return i915_subtests(tests, NULL); |
| } |