1use crate::sys;
8use std::ops::Deref;
9use zerocopy::{FromBytes, Immutable};
10
11#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
12#[repr(transparent)]
13pub struct Topic(sys::zx_object_info_topic_t);
14
15impl Deref for Topic {
16 type Target = sys::zx_object_info_topic_t;
17
18 fn deref(&self) -> &Self::Target {
19 &self.0
20 }
21}
22
23pub(crate) unsafe trait ObjectQuery {
29 const TOPIC: Topic;
31 type InfoTy: FromBytes + Immutable;
33}
34
35assoc_values!(Topic, [
36 NONE = sys::ZX_INFO_NONE;
37 HANDLE_VALID = sys::ZX_INFO_HANDLE_VALID;
38 HANDLE_BASIC = sys::ZX_INFO_HANDLE_BASIC;
39 PROCESS = sys::ZX_INFO_PROCESS;
40 PROCESS_THREADS = sys::ZX_INFO_PROCESS_THREADS;
41 VMAR = sys::ZX_INFO_VMAR;
42 VMAR_MAPS = sys::ZX_INFO_VMAR_MAPS;
43 JOB_CHILDREN = sys::ZX_INFO_JOB_CHILDREN;
44 JOB_PROCESSES = sys::ZX_INFO_JOB_PROCESSES;
45 THREAD = sys::ZX_INFO_THREAD;
46 THREAD_EXCEPTION_REPORT = sys::ZX_INFO_THREAD_EXCEPTION_REPORT;
47 TASK_STATS = sys::ZX_INFO_TASK_STATS;
48 TASK_RUNTIME = sys::ZX_INFO_TASK_RUNTIME;
49 PROCESS_MAPS = sys::ZX_INFO_PROCESS_MAPS;
50 PROCESS_VMOS = sys::ZX_INFO_PROCESS_VMOS;
51 THREAD_STATS = sys::ZX_INFO_THREAD_STATS;
52 CPU_STATS = sys::ZX_INFO_CPU_STATS;
53 KMEM_STATS = sys::ZX_INFO_KMEM_STATS;
54 KMEM_STATS_EXTENDED = sys::ZX_INFO_KMEM_STATS_EXTENDED;
55 KMEM_STATS_COMPRESSION = sys::ZX_INFO_KMEM_STATS_COMPRESSION;
56 RESOURCE = sys::ZX_INFO_RESOURCE;
57 HANDLE_COUNT = sys::ZX_INFO_HANDLE_COUNT;
58 BTI = sys::ZX_INFO_BTI;
59 PROCESS_HANDLE_STATS = sys::ZX_INFO_PROCESS_HANDLE_STATS;
60 SOCKET = sys::ZX_INFO_SOCKET;
61 TIMER = sys::ZX_INFO_TIMER;
62 VMO = sys::ZX_INFO_VMO;
63 JOB = sys::ZX_INFO_JOB;
64 IOB = sys::ZX_INFO_IOB;
65 IOB_REGIONS = sys::ZX_INFO_IOB_REGIONS;
66 MEMORY_STALL = sys::ZX_INFO_MEMORY_STALL;
67 CLOCK_MAPPED_SIZE = sys::ZX_INFO_CLOCK_MAPPED_SIZE;
68]);