64 lines · c
1// SPDX-License-Identifier: MIT2/*3 * Copyright © 2020 Intel Corporation4 */5 6/* Just a quick and causal check of the shmem_utils API */7 8static int igt_shmem_basic(void *ignored)9{10 u32 datum = 0xdeadbeef, result;11 struct file *file;12 u32 *map;13 int err;14 15 file = shmem_create_from_data("mock", &datum, sizeof(datum));16 if (IS_ERR(file))17 return PTR_ERR(file);18 19 result = 0;20 err = shmem_read(file, 0, &result, sizeof(result));21 if (err)22 goto out_file;23 24 if (result != datum) {25 pr_err("Incorrect read back from shmemfs: %x != %x\n",26 result, datum);27 err = -EINVAL;28 goto out_file;29 }30 31 result = 0xc0ffee;32 err = shmem_write(file, 0, &result, sizeof(result));33 if (err)34 goto out_file;35 36 map = shmem_pin_map(file);37 if (!map) {38 err = -ENOMEM;39 goto out_file;40 }41 42 if (*map != result) {43 pr_err("Incorrect read back via mmap of last write: %x != %x\n",44 *map, result);45 err = -EINVAL;46 goto out_map;47 }48 49out_map:50 shmem_unpin_map(file, map);51out_file:52 fput(file);53 return err;54}55 56int shmem_utils_mock_selftests(void)57{58 static const struct i915_subtest tests[] = {59 SUBTEST(igt_shmem_basic),60 };61 62 return i915_subtests(tests, NULL);63}64