starnix_uapi/
kcmp.rs

1// Copyright 2023 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#![allow(non_camel_case_types)]
6
7use crate::errors::{Errno, error};
8use crate::uapi;
9
10#[derive(Copy, Clone, Debug, Eq, PartialEq)]
11pub enum KcmpResource {
12    FILE,
13    VM,
14    FILES,
15    FS,
16    SIGHAND,
17    IO,
18    SYSVSEM,
19    EPOLL_TFD,
20    TYPES,
21}
22
23impl KcmpResource {
24    pub fn from_raw(resource: u32) -> Result<KcmpResource, Errno> {
25        Ok(match resource {
26            uapi::kcmp_type_KCMP_FILE => KcmpResource::FILE,
27            uapi::kcmp_type_KCMP_VM => KcmpResource::VM,
28            uapi::kcmp_type_KCMP_FILES => KcmpResource::FILES,
29            uapi::kcmp_type_KCMP_FS => KcmpResource::FS,
30            uapi::kcmp_type_KCMP_SIGHAND => KcmpResource::SIGHAND,
31            uapi::kcmp_type_KCMP_IO => KcmpResource::IO,
32            uapi::kcmp_type_KCMP_SYSVSEM => KcmpResource::SYSVSEM,
33            uapi::kcmp_type_KCMP_EPOLL_TFD => KcmpResource::EPOLL_TFD,
34            uapi::kcmp_type_KCMP_TYPES => KcmpResource::TYPES,
35            _ => return error!(EINVAL),
36        })
37    }
38}