Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
structs.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Intel
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6#ifndef ZEPHYR_INCLUDE_X86_STRUCTS_H_
7#define ZEPHYR_INCLUDE_X86_STRUCTS_H_
8
9#include <stdint.h>
10
11struct k_thread;
12
13/* Per CPU architecture specifics (empty) */
14struct _cpu_arch {
15
16#if defined(CONFIG_FPU_SHARING)
17 /*
18 * A 'sse_owner' field does not exist in addition to the 'fpu_owner'
19 * field since it's not possible to divide the IA-32 non-integer
20 * registers into 2 distinct blocks owned by differing threads. In
21 * other words, given that the 'fxnsave/fxrstor' instructions
22 * save/restore both the X87 FPU and XMM registers, it's not possible
23 * for a thread to only "own" the XMM registers.
24 */
25
26 struct k_thread *fpu_owner;
27#endif
28#if defined(CONFIG_HW_SHADOW_STACK)
29 long *shstk_addr; /* Latest top of shadow stack */
30 long *shstk_base; /* Base of shadow stack */
31 size_t shstk_size;
32#endif
33#if defined(__cplusplus) && !defined(CONFIG_FPU_SHARING) && \
34 !defined(CONFIG_HW_SHADOW_STACK)
35 /* Ensure this struct does not have a size of 0 which is not allowed in C++. */
36 uint8_t dummy;
37#endif
38};
39
40#endif /* ZEPHYR_INCLUDE_X86_STRUCTS_H_ */
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Thread Structure.
Definition thread.h:262