Lines Matching full:kernel

3 Kernel Objects
6 A kernel object can be one of three classes of data:
8 * A core kernel object, such as a semaphore, thread, pipe, etc.
14 The set of known kernel objects and driver subsystems is defined in
15 include/kernel.h as :c:enum:`k_objects`.
17 Kernel objects are completely opaque to user threads. User threads work
18 with addresses to kernel objects when making API calls, but may never
20 All kernel objects must be placed in memory that is not accessible by
23 Since user threads may not directly manipulate kernel objects, all use of
25 a kernel object, checks are performed by system call handler functions
26 that the kernel object address is valid and that the calling thread
44 Kernel objects that are only used by supervisor threads have no restrictions
49 In order for a static kernel object to be usable by a user thread via system
50 call APIs, several conditions must be met on how the kernel object is declared:
53 appears in the ELF symbol table. It is permitted to declare kernel objects
55 generated ELF file to find kernel objects and places their memory addresses
56 in a special table of kernel object metadata. Kernel objects may be members
59 * Kernel objects must be located in memory reserved for the kernel. They
62 * Any memory reserved for a kernel object must be used exclusively for that
63 object. Kernel objects may not be members of a union data type.
65 Kernel objects that are found but do not meet the above conditions will not be
66 included in the generated table that is used to validate kernel object pointers
77 Kernel objects may also be allocated at runtime if
102 valid kernel object instances in the binary. It accomplishes this by parsing
103 the DWARF debug information present in the generated ELF file for the kernel.
105 Any instances of structs or arrays corresponding to kernel objects that meet
107 special perfect hash table of kernel objects generated by the 'gperf' tool.
108 When a system call is made and the kernel is presented with a memory address
109 of what may or may not be a valid kernel object, the address can be validated
118 The table itself maps kernel object memory addresses to instances of
140 Supervisor threads can access any kernel object. However, permissions for
155 on its own thread object. Other kernel objects by default are not usable.
167 number of pointers to kernel objects and calls
171 have permissions on both the kernel object and the target thread object.
173 * Supervisor threads may declare a particular kernel object to be a public
181 access to a set of kernel objects at boot time.
189 API calls from supervisor mode to set permissions on kernel objects that are
190 not being tracked by the kernel will be no-ops. Doing the same from user mode
199 Most operations on kernel objects will fail if the object is considered to be
205 * Kernel objects that were declared with static initialization macros
210 is run by the kernel early in the boot process.
212 If a kernel object is initialized with a private static initializer, the object
214 thread, otherwise the kernel will consider the object uninitialized if accessed
215 by a user thread. This is very uncommon, typically only for kernel objects that
235 Creating New Kernel Object Types
238 When implementing new kernel features or driver subsystems, it may be necessary
239 to define some new kernel object types. There are different steps needed
240 for creating core kernel objects and new driver subsystems.
242 Creating New Core Kernel Objects
250 Creating New Driver Subsystem Kernel Objects