64 lines
1.1 KiB
C
64 lines
1.1 KiB
C
// 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);
|
|
}
|