Appendix 5.A LCS ABI Reference

Every name, value, offset and size in this appendix is generated from pkm/uapi/pkm/lcs.h by pkm/tools/gen-lcs-abi.py, with ioctl encodings and struct layouts measured by compiling a probe against the real header. Regenerate it whenever the ABI changes; do not edit it by hand. The names here are the ones a program actually compiles against.

What a compiler cannot measure -- which properties belong with their operations rather than here, and the kernel configuration -- is in the notes appendix, §5.B, which this generator does not touch.

5.A.1 Syscall numbers #

Signatures are read from the SYSCALL_DEFINE sites in pkm/lcs/.

NumberConstantSignature
1100SYS_REG_OPEN_KEYreg_open_key(int parent_fd, const char __user *path, u32 desired_access, u32 flags)
1101SYS_REG_CREATE_KEYreg_create_key(const struct reg_create_key_args __user *args)
1102SYS_REG_BEGIN_TRANSACTIONreg_begin_transaction(void)

5.A.2 Ioctls #

The type byte is 'R'. Ioctl number namespaces are per fd type, so REG_SRC_REGISTER (number 0 on the source device) and REG_IOC_QUERY_VALUE (number 0 on a key fd) do not collide: the kernel dispatches on the fd's file_operations, not globally. The encoded value is what _IOC produces from the direction, type byte, number and argument size.

Source device fd.

IoctlNumberDirectionArgumentArg sizeEncoded
REG_SRC_REGISTER0_IOWstruct reg_src_register_args240x40185200

Key fd.

IoctlNumberDirectionArgumentArg sizeEncoded
REG_IOC_QUERY_VALUE0_IOWRstruct reg_query_value_args640xC0405200
REG_IOC_SET_VALUE1_IOWstruct reg_set_value_args640x40405201
REG_IOC_DELETE_VALUE2_IOWstruct reg_delete_value_args400x40285202
REG_IOC_BLANKET_TOMBSTONE3_IOWstruct reg_blanket_tombstone_args240x40185203
REG_IOC_QUERY_VALUES_BATCH4_IOWRstruct reg_query_values_batch_args240xC0185204
REG_IOC_ENUM_VALUES5_IOWRstruct reg_enum_value_args400xC0285205
REG_IOC_ENUM_SUBKEYS6_IOWRstruct reg_enum_subkey_args400xC0285206
REG_IOC_QUERY_KEY_INFO7_IOWRstruct reg_query_key_info_args640xC0405207
REG_IOC_DELETE_KEY8_IOWstruct reg_delete_key_args240x40185208
REG_IOC_HIDE_KEY9_IOWstruct reg_hide_key_args240x40185209
REG_IOC_GET_SECURITY10_IOWRstruct reg_get_security_args160xC010520A
REG_IOC_SET_SECURITY11_IOWstruct reg_set_security_args240x4018520B
REG_IOC_NOTIFY12_IOWstruct reg_notify_args80x4008520C
REG_IOC_FLUSH13_IOnone00x0000520D
REG_IOC_BACKUP14_IOWstruct reg_backup_args40x4004520E
REG_IOC_RESTORE15_IOWstruct reg_restore_args40x4004520F

Transaction fd.

IoctlNumberDirectionArgumentArg sizeEncoded
REG_IOC_COMMIT16_IOnone00x00005210
REG_IOC_TXN_STATUS17_IORstruct reg_txn_status_args80x80085211

5.A.3 Structure layouts #

Offsets and sizes are measured, not declared. The header also defines a _SIZE constant for each of these structures; the two agree by construction, and a mismatch fails the build in uapi/smoke_test.c.

5.A.3.1 struct reg_create_key_args #

Total size 48 bytes.

OffsetSizeTypeField
04__s32parent_fd
44__u32_pad0
88__u64path_ptr
164__u32desired_access
204__u32flags
248__u64layer_ptr
324__s32txn_fd
364__u32_pad1
408__u64disposition_ptr

5.A.3.2 struct reg_query_value_args #

Total size 64 bytes.

OffsetSizeTypeField
04__u32name_len
44__u32_pad0
88__u64name_ptr
164__u32type
204__u32data_len
244__s32txn_fd
284__u32layer_buf_len
328__u64data_ptr
408__u64sequence
484__u32layer_len
524__u32_pad1
568__u64layer_ptr

5.A.3.3 struct reg_set_value_args #

Total size 64 bytes.

OffsetSizeTypeField
04__u32name_len
44__u32_pad0
88__u64name_ptr
164__u32type
204__u32data_len
248__u64data_ptr
324__u32layer_len
364__u32_pad1
408__u64layer_ptr
484__s32txn_fd
524__u32_pad2
568__u64expected_seq

5.A.3.4 struct reg_delete_value_args #

Total size 40 bytes.

OffsetSizeTypeField
04__u32name_len
44__u32_pad0
88__u64name_ptr
164__u32layer_len
204__u32_pad1
248__u64layer_ptr
324__s32txn_fd
364__u32_pad2

5.A.3.5 struct reg_blanket_tombstone_args #

Total size 24 bytes.

OffsetSizeTypeField
04__u32layer_len
44__u32_pad0
88__u64layer_ptr
161__u8set
173__u8``[3]_pad1
204__s32txn_fd

5.A.3.6 struct reg_query_values_batch_args #

Total size 24 bytes.

OffsetSizeTypeField
04__u32buf_len
44__u32count
88__u64buf_ptr
164__s32txn_fd
204__u32_pad

5.A.3.7 struct reg_enum_value_args #

Total size 40 bytes.

OffsetSizeTypeField
04__u32index
44__u32name_len
88__u64name_ptr
164__u32type
204__u32data_len
248__u64data_ptr
324__s32txn_fd
364__u32_pad

5.A.3.8 struct reg_enum_subkey_args #

Total size 40 bytes.

OffsetSizeTypeField
04__u32index
44__u32name_len
88__u64name_ptr
168__u64last_write_time
244__u32subkey_count
284__u32value_count
324__s32txn_fd
364__u32_pad

5.A.3.9 struct reg_query_key_info_args #

Total size 64 bytes.

OffsetSizeTypeField
04__u32name_len
44__u32_pad0
88__u64name_ptr
168__u64last_write_time
244__u32subkey_count
284__u32value_count
324__u32max_subkey_name_len
364__u32max_value_name_len
404__u32max_value_data_size
444__u32sd_size
481__u8volatile_key
491__u8symlink
506__u8``[6]_pad1
568__u64hive_generation

5.A.3.10 struct reg_delete_key_args #

Total size 24 bytes.

OffsetSizeTypeField
04__u32layer_len
44__u32_pad0
88__u64layer_ptr
164__s32txn_fd
204__u32_pad1

5.A.3.11 struct reg_hide_key_args #

Total size 24 bytes.

OffsetSizeTypeField
04__u32layer_len
44__u32_pad0
88__u64layer_ptr
164__s32txn_fd
204__u32_pad1

5.A.3.12 struct reg_get_security_args #

Total size 16 bytes.

OffsetSizeTypeField
04__u32security_info
44__u32sd_len
88__u64sd_ptr

5.A.3.13 struct reg_set_security_args #

Total size 24 bytes.

OffsetSizeTypeField
04__u32security_info
44__u32sd_len
88__u64sd_ptr
164__s32txn_fd
204__u32_pad

5.A.3.14 struct reg_notify_args #

Total size 8 bytes.

OffsetSizeTypeField
04__u32filter
41__u8subtree
53__u8``[3]_pad

5.A.3.15 struct reg_backup_args #

Total size 4 bytes.

OffsetSizeTypeField
04__s32output_fd

5.A.3.16 struct reg_restore_args #

Total size 4 bytes.

OffsetSizeTypeField
04__s32input_fd

5.A.3.17 struct reg_txn_status_args #

Total size 8 bytes.

OffsetSizeTypeField
04__u32state
44__s32terminal_errno

5.A.3.18 struct reg_src_register_args #

Total size 24 bytes.

OffsetSizeTypeField
04__u32hive_count
44__u32_pad
88__u64max_sequence
168__u64hives_ptr

5.A.3.19 struct reg_src_hive_entry #

Total size 56 bytes.

OffsetSizeTypeField
04__u32name_len
44__u32_pad0
88__u64name_ptr
1616__u8``[16]root_guid
324__u32flags
364__u32_pad1
4016__u8``[16]scope_guid

5.A.4 Constants #

Grouped as the header groups them.

Syscall and ioctl argument sizes.

ConstantValue
REG_CREATE_KEY_ARGS_SIZE48
REG_QUERY_VALUE_ARGS_SIZE64
REG_SET_VALUE_ARGS_SIZE64
REG_DELETE_VALUE_ARGS_SIZE40
REG_BLANKET_TOMBSTONE_ARGS_SIZE24
REG_QUERY_VALUES_BATCH_ARGS_SIZE24
REG_ENUM_VALUE_ARGS_SIZE40
REG_ENUM_SUBKEY_ARGS_SIZE40
REG_QUERY_KEY_INFO_ARGS_SIZE64
REG_DELETE_KEY_ARGS_SIZE24
REG_HIDE_KEY_ARGS_SIZE24
REG_GET_SECURITY_ARGS_SIZE16
REG_SET_SECURITY_ARGS_SIZE24
REG_NOTIFY_ARGS_SIZE8
REG_BACKUP_ARGS_SIZE4
REG_RESTORE_ARGS_SIZE4
REG_TXN_STATUS_ARGS_SIZE8
REG_SRC_REGISTER_ARGS_SIZE24
REG_SRC_HIVE_ENTRY_SIZE56

_IOWR, not _IOR: the kernel reads the caller's name_len and name_ptr out of the argument struct before it writes the result back, so the argument crosses in both directions. It was declared _IOR, which put the wrong direction bits in the encoded number -- and since the kernel dispatches on the whole encoded value, correcting it is a wire break, not a relabelling.

ConstantValue
REG_IOC_QUERY_KEY_INFO0xC0405207
REG_IOC_DELETE_KEY0x40185208
REG_IOC_HIDE_KEY0x40185209
REG_IOC_GET_SECURITY0xC010520A
REG_IOC_SET_SECURITY0x4018520B
REG_IOC_NOTIFY0x4008520C
REG_IOC_FLUSH0x0000520D
REG_IOC_BACKUP0x4004520E
REG_IOC_RESTORE0x4004520F

Transaction state codes.

ConstantValue
REG_TXN_ACTIVE_UNBOUND0
REG_TXN_ACTIVE_BOUND1
REG_TXN_COMMITTED2
REG_TXN_ABORTED3
REG_TXN_TIMED_OUT4
REG_TXN_SOURCE_DOWN5

Syscall flags and dispositions.

ConstantValue
REG_OPEN_LINK0x01
REG_OPTION_VOLATILE0x01
REG_OPTION_CREATE_LINK0x02
REG_CREATED_NEW1
REG_OPENED_EXISTING2

Registry key access rights.

ConstantValue
KEY_QUERY_VALUE0x00000001
KEY_SET_VALUE0x00000002
KEY_CREATE_SUB_KEY0x00000004
KEY_ENUMERATE_SUB_KEYS0x00000008
KEY_NOTIFY0x00000010
KEY_CREATE_LINK0x00000020
DELETE0x00010000
READ_CONTROL0x00020000
WRITE_DAC0x00040000
WRITE_OWNER0x00080000
ACCESS_SYSTEM_SECURITY0x01000000
MAXIMUM_ALLOWED0x02000000
GENERIC_ALL0x10000000
GENERIC_EXECUTE0x20000000
GENERIC_WRITE0x40000000
GENERIC_READ0x80000000
KEY_READ0x00020019
KEY_WRITE0x00020006
KEY_ALL_ACCESS0x000F003F
REG_VALID_DESIRED_ACCESS_MASK0xF30F003F
REG_VALID_MAPPED_ACCESS_MASK0x010F003F
REG_VALID_ACE_ACCESS_MASK0xF10F003F

Security information flags for REG_IOC_GET_SECURITY / SET_SECURITY.

ConstantValue
OWNER_SECURITY_INFORMATION0x00000001
GROUP_SECURITY_INFORMATION0x00000002
DACL_SECURITY_INFORMATION0x00000004
SACL_SECURITY_INFORMATION0x00000008
REG_VALID_SECURITY_INFORMATION0x0000000F

Registry value types.

ConstantValue
REG_NONE0
REG_SZ1
REG_EXPAND_SZ2
REG_BINARY3
REG_DWORD4
REG_DWORD_BIG_ENDIAN5
REG_LINK6
REG_MULTI_SZ7
REG_RESOURCE_LIST8
REG_FULL_RESOURCE_DESCRIPTOR9
REG_RESOURCE_REQUIREMENTS_LIST10
REG_QWORD11
REG_TOMBSTONE0xFFFF

Watch event types and filters.

ConstantValue
REG_WATCH_VALUE_SET1
REG_WATCH_VALUE_DELETED2
REG_WATCH_SUBKEY_CREATED3
REG_WATCH_SUBKEY_DELETED4
REG_WATCH_SD_CHANGED5
REG_WATCH_KEY_DELETED6
REG_WATCH_OVERFLOW7

Watch event raw byte layout.

ConstantValue
REG_WATCH_EVENT_TOTAL_LEN_OFFSET0
REG_WATCH_EVENT_TYPE_OFFSET4
REG_WATCH_EVENT_NAME_LEN_OFFSET6
REG_WATCH_EVENT_NAME_OFFSET8
REG_WATCH_EVENT_MIN_SIZE8
REG_WATCH_SUBTREE_PATH_DEPTH_REL_OFFSET0
REG_WATCH_SUBTREE_PATH_DEPTH_SIZE2
REG_WATCH_SUBTREE_PATH_COMPONENTS_REL_OFFSET2
REG_WATCH_PATH_COMPONENT_LEN_SIZE2
REG_NOTIFY_VALUE0x01
REG_NOTIFY_SUBKEY0x02
REG_NOTIFY_SD0x04
REG_NOTIFY_ALL0x07

RSI common wire layout.

ConstantValue
RSI_REQUEST_TOTAL_LEN_OFFSET0
RSI_REQUEST_ID_OFFSET4
RSI_REQUEST_OP_CODE_OFFSET12
RSI_REQUEST_TXN_ID_OFFSET14
RSI_REQUEST_HEADER_SIZE22
RSI_RESPONSE_TOTAL_LEN_OFFSET0
RSI_RESPONSE_ID_OFFSET4
RSI_RESPONSE_OP_CODE_OFFSET12
RSI_RESPONSE_HEADER_SIZE14
RSI_RESPONSE_STATUS_OFFSET14
RSI_STATUS_SIZE4
RSI_MIN_RESPONSE_SIZE18
RSI_LENGTH_PREFIX_SIZE4
RSI_GUID_SIZE16
RSI_RESPONSE_BIT0x8000

RSI op codes and response op codes.

ConstantValue
RSI_LOOKUP0x0001
RSI_CREATE_ENTRY0x0002
RSI_HIDE_ENTRY0x0003
RSI_DELETE_ENTRY0x0004
RSI_ENUM_CHILDREN0x0005
RSI_CREATE_KEY0x0010
RSI_READ_KEY0x0011
RSI_WRITE_KEY0x0012
RSI_DROP_KEY0x0013
RSI_QUERY_VALUES0x0020
RSI_SET_VALUE0x0021
RSI_DELETE_VALUE_ENTRY0x0022
RSI_SET_BLANKET_TOMBSTONE0x0023
RSI_BEGIN_TRANSACTION0x0030
RSI_COMMIT_TRANSACTION0x0031
RSI_ABORT_TRANSACTION0x0032
RSI_FLUSH0x0040
RSI_DELETE_LAYER0x0050
RSI_LOOKUP_RESPONSE0x8001
RSI_CREATE_ENTRY_RESPONSE0x8002
RSI_HIDE_ENTRY_RESPONSE0x8003
RSI_DELETE_ENTRY_RESPONSE0x8004
RSI_ENUM_CHILDREN_RESPONSE0x8005
RSI_CREATE_KEY_RESPONSE0x8010
RSI_READ_KEY_RESPONSE0x8011
RSI_WRITE_KEY_RESPONSE0x8012
RSI_DROP_KEY_RESPONSE0x8013
RSI_QUERY_VALUES_RESPONSE0x8020
RSI_SET_VALUE_RESPONSE0x8021
RSI_DELETE_VALUE_ENTRY_RESPONSE0x8022
RSI_SET_BLANKET_TOMBSTONE_RESPONSE0x8023
RSI_BEGIN_TRANSACTION_RESPONSE0x8030
RSI_COMMIT_TRANSACTION_RESPONSE0x8031
RSI_ABORT_TRANSACTION_RESPONSE0x8032
RSI_FLUSH_RESPONSE0x8040
RSI_DELETE_LAYER_RESPONSE0x8050

RSI status codes.

ConstantValue
RSI_OK0
RSI_NOT_FOUND1
RSI_ALREADY_EXISTS2
RSI_STORAGE_ERROR3
RSI_NOT_EMPTY4
RSI_TOO_LARGE5
RSI_TXN_BUSY6
RSI_INVALID7
RSI_CAS_FAILED8
RSI_TXN_NOT_SUPPORTED9

RSI path target types.

ConstantValue
RSI_PATH_TARGET_GUID0
RSI_PATH_TARGET_HIDDEN1

RSI_WRITE_KEY field mask bits.

ConstantValue
RSI_WRITE_KEY_FIELD_SD0x01
RSI_WRITE_KEY_FIELD_LAST_WRITE_TIME0x02
RSI_WRITE_KEY_FIELD_KNOWN_MASK0x00000003

RSI transaction modes and source-registration flags.

ConstantValue
RSI_TXN_READ_WRITE0
RSI_TXN_READ_ONLY1
RSI_HIVE_PRIVATE0x01

Backup record types and magic.

ConstantValue
REG_BACKUP_HEADER0x01
REG_BACKUP_LAYER0x02
REG_BACKUP_KEY0x03
REG_BACKUP_PATH_ENTRY0x04
REG_BACKUP_VALUE0x05
REG_BACKUP_BLANKET_TOMBSTONE0x06
REG_BACKUP_TRAILER0xFF
REG_BACKUP_MAGIC"PEIOSREG"

5.A.5 Tracepoint diagnostic codes #

From uapi/pkm/trace.h. These are a diagnostic contract for ftrace, perf and eBPF consumers, letting a tool decode an lcs: event's reason, op or state field without recompiling against a specific kernel. No LCS syscall accepts or returns them, and values are append-only.

lcs_rsi_request op — which of the 18 RSI dispatch verbs a source-side request admission record describes. Emitted by lcs:lcs_rsi_request on successful queue admission and on the admission error rungs; the rung is read from ret (0 == enqueued, -EAGAIN == in-flight at limit / backpressure, -EIO == source gone / fd closing, -EOVERFLOW == request-id space exhausted, other == build reject). The same op enum tags the round-trip begin marker (lcs_rsi_roundtrip). Never records a pathname, key name, GUID, or frame bytes — only this op code, ids, counts and ret.

ConstantValueNotes
LCS_OP_LOOKUP0RSI_LOOKUP
LCS_OP_READ_KEY1RSI_READ_KEY
LCS_OP_ENUM_CHILDREN2RSI_ENUM_CHILDREN
LCS_OP_QUERY_VALUES3RSI_QUERY_VALUES
LCS_OP_SET_VALUE4RSI_SET_VALUE
LCS_OP_DELETE_VALUE5RSI_DELETE_VALUE_ENTRY
LCS_OP_BLANKET_TOMBSTONE6RSI_SET_BLANKET_TOMBSTONE
LCS_OP_DROP_KEY7RSI_DROP_KEY
LCS_OP_CREATE_ENTRY8RSI_CREATE_ENTRY
LCS_OP_HIDE_ENTRY9RSI_HIDE_ENTRY
LCS_OP_DELETE_ENTRY10RSI_DELETE_ENTRY
LCS_OP_CREATE_KEY11RSI_CREATE_KEY
LCS_OP_WRITE_KEY12RSI_WRITE_KEY
LCS_OP_TXN_BEGIN13RSI_BEGIN_TRANSACTION
LCS_OP_TXN_COMMIT14RSI_COMMIT_TRANSACTION
LCS_OP_TXN_ABORT15RSI_ABORT_TRANSACTION
LCS_OP_FLUSH16RSI_FLUSH
LCS_OP_DELETE_LAYER17RSI_DELETE_LAYER

lcs_rsi_response reason — the outcome of accepting/validating a source's RSI response frame, and the late-response effects that silently mark a source DOWN. ACCEPTED is the clean path; DESYNC / OP_MISMATCH / UNKNOWN_STATUS are the accept-time rejects that all surface as -EINVAL/-EIO; MALFORMED_PAYLOAD is a per-op body validation reject; the LATE_* codes mark a response whose deferred effect (commit/mutation/begin bookkeeping) failed and took the source DOWN. Verdict/outcome is also in ret. Never records name/GUID/frame bytes.

ConstantValueNotes
LCS_RESP_ACCEPTED0response matched an in-flight request
LCS_RESP_DESYNC1no matching delivered/unaccepted record
LCS_RESP_OP_MISMATCH2response op != request op | RESPONSE_BIT
LCS_RESP_UNKNOWN_STATUS3rsi_status not a known status code
LCS_RESP_MALFORMED_PAYLOAD4per-op response body failed validation
LCS_RESP_LATE_COMMIT_FAIL5commit late-effect failed; source DOWN
LCS_RESP_LATE_MUTATION_FAIL6mutation late-effect failed; source DOWN
LCS_RESP_LATE_BEGIN_FAIL7begin-txn late-effect failed; source DOWN

lcs_source_fd reason — which source-fd lifecycle transition a record marks.

OPEN is a fresh /dev/pkm_registry fd; the remaining codes are the entry points that drive a source to the DOWN/closing state. source_down_id is the source id that transitioned DOWN (0 if the call was a no-op). The semantic cause of a late-effect-driven DOWN is carried by lcs_rsi_response (LCS_RESP_LATE_*); here EXPLICIT/MARK_BY_ID are the mechanical transitions. No pathname/SD bytes.

ConstantValueNotes
LCS_SRC_OPEN0new source fd issued (post-TCB check)
LCS_SRC_RELEASE1fd .release() teardown
LCS_SRC_MALFORMED2malformed protocol frame -> mark down
LCS_SRC_EXPLICIT3explicit mark-down of this fd
LCS_SRC_MARK_BY_ID4mark-down requested by source id

lcs_in_flight reason — an in-flight RSI request table transition (kept lean; insert on admission, delivered when handed to the source's read(), release on response completion or teardown). in_flight_count is the post-transition depth. Emitted by lcs:lcs_in_flight.

ConstantValueNotes
LCS_IF_INSERT0request inserted into in-flight table
LCS_IF_DELIVERED1request delivered to source read()
LCS_IF_RELEASE2request released from in-flight table

lcs_route op — which resolution the lcs:lcs_route event describes.

ConstantValueNotes
LCS_ROUTE_HIVE_NAME0hive-name -> source/root resolution
LCS_ROUTE_ABSOLUTE_PATH1absolute-path -> source/root resolution
LCS_ROUTE_SYMLINK_TARGET2symlink-target -> source/root resolution

lcs_registration decision — the source registration path.

NEW/RESUME_DOWN are publish verdicts; COPY is the input-copy stage; REPLAY_FAIL/OVERFLOW_FAIL are resume post-publish -EIO paths that mark the resumed source down. Emitted by lcs:lcs_source_register / _registration_publish / _registration_copy.

ConstantValueNotes
LCS_REG_NEW0new source slot admitted
LCS_REG_RESUME_DOWN1down source slot resumed
LCS_REG_COPY2registration input copied from user
LCS_REG_REPLAY_FAIL3resume pending-delete replay failed (EIO)
LCS_REG_OVERFLOW_FAIL4resume overflow dispatch failed (EIO)

lcs_bootstrap stage — the phase of a bootstrap / self-config refresh.

Emitted by lcs:lcs_bootstrap_refresh / _self_config_refresh / _self_config_publish.

ConstantValueNotes
LCS_BOOT_REGISTRY0registry root discover phase
LCS_BOOT_KMES1kmes config root discover phase
LCS_BOOT_LAYERS2layer metadata root discover phase
LCS_BOOT_SELF_WATCH3self-watch arm phase
LCS_BOOT_COMPLETE4bootstrap refresh completed
LCS_BOOT_SELF_CONFIG_REFRESH5self-config refresh-from-key outcome
LCS_BOOT_SELF_CONFIG_PARAM_INVALID6self-config publish rejected a parameter

lcs_runtime_limits field_id — which runtime-limit field a validate reject names, or LCS_LIM_ALL for a successful whole-struct publish. Emitted by lcs:lcs_limits_validate (-EINVAL, value offending) and lcs:lcs_limits_publish.

ConstantValueNotes
LCS_LIM_REQUEST_TIMEOUT_MS0
LCS_LIM_TRANSACTION_TIMEOUT_MS1
LCS_LIM_NOTIFICATION_QUEUE_SIZE2
LCS_LIM_SYMLINK_DEPTH_LIMIT3
LCS_LIM_MAX_VALUE_SIZE4
LCS_LIM_MAX_KEY_DEPTH5
LCS_LIM_MAX_PATH_COMPONENT_LENGTH6
LCS_LIM_MAX_TOTAL_PATH_LENGTH7
LCS_LIM_MAX_LAYERS_PER_VALUE8
LCS_LIM_MAX_BOUND_TRANSACTIONS_PER_SOURCE9
LCS_LIM_MAX_READ_ONLY_TRANSACTIONS_PER_SOURCE10
LCS_LIM_MAX_TOTAL_LAYERS11
LCS_LIM_MAX_REGISTERED_SOURCES12
LCS_LIM_MAX_HIVES_PER_SOURCE13
LCS_LIM_MAX_CONCURRENT_RSI_REQUESTS14
LCS_LIM_MAX_SCOPE_GUIDS_PER_TOKEN15
LCS_LIM_MAX_PRIVATE_LAYERS_PER_TOKEN16
LCS_LIM_MAX_SUBTREE_WATCH_DEPTH17
LCS_LIM_MAX_TRANSACTION_WATCH_EVENT_BURST18
LCS_LIM_ALL19whole-struct publish (success)

lcs_audit event_type_id — which LCS audit event a record describes.

Emitted by lcs:lcs_audit_emit and lcs:lcs_audit_emit_failed. result_errno carries the op-specific numeric. No SD or raw GUID bytes; key GUID is a u64 hash.

ConstantValueNotes
LCS_AUDIT_KEY_OPEN0key-open SACL audit
LCS_AUDIT_BACKUP_START1
LCS_AUDIT_BACKUP_COMPLETE2
LCS_AUDIT_RESTORE_START3
LCS_AUDIT_RESTORE_COMPLETE4
LCS_AUDIT_VALIDATION_FAILURE5source validation-failure audit
LCS_AUDIT_SELF_CONFIG_INVALID6self-config-invalid audit

lcs_txn state — the transaction-fd state machine state carried in old_state new_state.

Emitted by lcs:lcs_txn_begin / _first_bind / _bind_mutation _commit / _abort / _timeout / _source_down.

ConstantValueNotes
LCS_TXN_ST_ACTIVE_UNBOUND0allocated, not yet source-bound
LCS_TXN_ST_ACTIVE_BOUND1bound to a source + root guid
LCS_TXN_ST_COMMITTED2commit round-trip succeeded
LCS_TXN_ST_ABORTED3aborted (close / layer writer abort)
LCS_TXN_ST_TIMED_OUT4deadline timer or commit timeout
LCS_TXN_ST_SOURCE_DOWN5bound source marked down

lcs_key_fd cmd — the key-fd ioctl verb (also stamped on lcs_key_mutation).

LCS_KCMD_NONE is used by publish/release/read. Never records key/name/SD bytes. Emitted by lcs:lcs_key_ioctl / _mutation.

ConstantValueNotes
LCS_KCMD_NONE0no ioctl verb (publish/release/read)
LCS_KCMD_SET_VALUE1
LCS_KCMD_DELETE_VALUE2
LCS_KCMD_BLANKET_TOMBSTONE3
LCS_KCMD_DELETE_KEY4
LCS_KCMD_HIDE_KEY5
LCS_KCMD_QUERY_VALUE6
LCS_KCMD_QUERY_VALUES_BATCH7
LCS_KCMD_ENUM_VALUES8
LCS_KCMD_ENUM_SUBKEYS9
LCS_KCMD_QUERY_KEY_INFO10
LCS_KCMD_GET_SECURITY11
LCS_KCMD_SET_SECURITY12
LCS_KCMD_FLUSH13
LCS_KCMD_BACKUP14
LCS_KCMD_RESTORE15
LCS_KCMD_NOTIFY16

Edit this page