drivers/base/test/property-entry-test.c
Source file repositories/reference/linux-study-clean/drivers/base/test/property-entry-test.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/base/test/property-entry-test.c- Extension
.c- Size
- 16182 bytes
- Lines
- 513
- Domain
- Driver Families
- Bucket
- drivers/base
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
kunit/test.hlinux/property.hlinux/types.h
Detected Declarations
function pe_test_uintsfunction pe_test_uint_arraysfunction pe_test_stringsfunction pe_test_boolfunction pe_test_move_inline_u8function pe_test_move_inline_strfunction pe_test_reference
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0
// Unit tests for property entries API
//
// Copyright 2019 Google LLC.
#include <kunit/test.h>
#include <linux/property.h>
#include <linux/types.h>
static void pe_test_uints(struct kunit *test)
{
static const struct property_entry entries[] = {
PROPERTY_ENTRY_U8("prop-u8", 8),
PROPERTY_ENTRY_U16("prop-u16", 16),
PROPERTY_ENTRY_U32("prop-u32", 32),
PROPERTY_ENTRY_U64("prop-u64", 64),
{ }
};
struct fwnode_handle *node;
u8 val_u8, array_u8[2];
u16 val_u16, array_u16[2];
u32 val_u32, array_u32[2];
u64 val_u64, array_u64[2];
int error;
node = fwnode_create_software_node(entries, NULL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node);
error = fwnode_property_count_u8(node, "prop-u8");
KUNIT_EXPECT_EQ(test, error, 1);
error = fwnode_property_read_u8(node, "prop-u8", &val_u8);
KUNIT_EXPECT_EQ(test, error, 0);
KUNIT_EXPECT_EQ(test, val_u8, 8);
error = fwnode_property_read_u8_array(node, "prop-u8", array_u8, 1);
KUNIT_EXPECT_EQ(test, error, 0);
KUNIT_EXPECT_EQ(test, array_u8[0], 8);
error = fwnode_property_read_u8_array(node, "prop-u8", array_u8, 2);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u8(node, "no-prop-u8", &val_u8);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u8_array(node, "no-prop-u8", array_u8, 1);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u16(node, "prop-u16", &val_u16);
KUNIT_EXPECT_EQ(test, error, 0);
KUNIT_EXPECT_EQ(test, val_u16, 16);
error = fwnode_property_count_u16(node, "prop-u16");
KUNIT_EXPECT_EQ(test, error, 1);
error = fwnode_property_read_u16_array(node, "prop-u16", array_u16, 1);
KUNIT_EXPECT_EQ(test, error, 0);
KUNIT_EXPECT_EQ(test, array_u16[0], 16);
error = fwnode_property_read_u16_array(node, "prop-u16", array_u16, 2);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u16(node, "no-prop-u16", &val_u16);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u16_array(node, "no-prop-u16", array_u16, 1);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u32(node, "prop-u32", &val_u32);
KUNIT_EXPECT_EQ(test, error, 0);
KUNIT_EXPECT_EQ(test, val_u32, 32);
error = fwnode_property_count_u32(node, "prop-u32");
KUNIT_EXPECT_EQ(test, error, 1);
error = fwnode_property_read_u32_array(node, "prop-u32", array_u32, 1);
KUNIT_EXPECT_EQ(test, error, 0);
KUNIT_EXPECT_EQ(test, array_u32[0], 32);
error = fwnode_property_read_u32_array(node, "prop-u32", array_u32, 2);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u32(node, "no-prop-u32", &val_u32);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u32_array(node, "no-prop-u32", array_u32, 1);
KUNIT_EXPECT_NE(test, error, 0);
error = fwnode_property_read_u64(node, "prop-u64", &val_u64);
Annotation
- Immediate include surface: `kunit/test.h`, `linux/property.h`, `linux/types.h`.
- Detected declarations: `function pe_test_uints`, `function pe_test_uint_arrays`, `function pe_test_strings`, `function pe_test_bool`, `function pe_test_move_inline_u8`, `function pe_test_move_inline_str`, `function pe_test_reference`.
- Atlas domain: Driver Families / drivers/base.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.