Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  message.rs   Sprache: unbekannt

 
//! This module corresponds to `mach/message.h`.

use kern_return::kern_return_t;
use port::{mach_port_name_t, mach_port_t};
use vm_types::{integer_t, natural_t};

pub type mach_msg_timeout_t = natural_t;

pub type mach_msg_bits_t = ::libc::c_uint;
pub type mach_msg_id_t = integer_t;
pub type mach_msg_size_t = natural_t;

pub type mach_msg_copy_options_t = ::libc::c_uint;
pub type mach_msg_descriptor_type_t = ::libc::c_uint;
pub type mach_msg_type_name_t = ::libc::c_uint;

pub type mach_msg_trailer_type_t = ::libc::c_uint;
pub type mach_msg_trailer_size_t = ::libc::c_uint;

pub type mach_msg_option_t = integer_t;

pub type mach_msg_type_number_t = natural_t;
pub type mach_msg_type_size_t = natural_t;

pub type mach_msg_return_t = kern_return_t;

pub const MACH_MSG_TIMEOUT_NONE: mach_msg_timeout_t = 0;

pub const MACH_MSGH_BITS_ZERO: mach_msg_bits_t = 0x0000_0000;

pub const MACH_MSGH_BITS_REMOTE_MASK: mach_msg_bits_t = 0x0000_001f;
pub const MACH_MSGH_BITS_LOCAL_MASK: mach_msg_bits_t = 0x0000_1f00;
pub const MACH_MSGH_BITS_VOUCHER_MASK: mach_msg_bits_t = 0x001f_0000;

pub const MACH_MSGH_BITS_PORTS_MASK: mach_msg_bits_t =
    MACH_MSGH_BITS_REMOTE_MASK | MACH_MSGH_BITS_LOCAL_MASK | MACH_MSGH_BITS_VOUCHER_MASK;

pub const MACH_MSGH_BITS_COMPLEX: mach_msg_bits_t = 0x8000_0000;

pub const MACH_MSGH_BITS_USER: mach_msg_bits_t = 0x801f_1f1f;

#[allow(non_snake_case)]
pub fn MACH_MSGH_BITS(remote: mach_msg_bits_t, local: mach_msg_bits_t) -> mach_msg_bits_t {
    remote | (local << 8)
}

pub const MACH_MSG_TYPE_MOVE_RECEIVE: mach_msg_type_name_t = 16;
pub const MACH_MSG_TYPE_MOVE_SEND: mach_msg_type_name_t = 17;
pub const MACH_MSG_TYPE_MOVE_SEND_ONCE: mach_msg_type_name_t = 18;
pub const MACH_MSG_TYPE_COPY_SEND: mach_msg_type_name_t = 19;
pub const MACH_MSG_TYPE_MAKE_SEND: mach_msg_type_name_t = 20;
pub const MACH_MSG_TYPE_MAKE_SEND_ONCE: mach_msg_type_name_t = 21;
pub const MACH_MSG_TYPE_COPY_RECEIVE: mach_msg_type_name_t = 22;
pub const MACH_MSG_TYPE_DISPOSE_RECEIVE: mach_msg_type_name_t = 24;
pub const MACH_MSG_TYPE_DISPOSE_SEND: mach_msg_type_name_t = 25;
pub const MACH_MSG_TYPE_DISPOSE_SEND_ONCE: mach_msg_type_name_t = 26;

pub const MACH_MSG_PHYSICAL_COPY: mach_msg_copy_options_t = 0;
pub const MACH_MSG_VIRTUAL_COPY: mach_msg_copy_options_t = 1;
pub const MACH_MSG_ALLOCATE: mach_msg_copy_options_t = 2;

pub const MACH_MSG_PORT_DESCRIPTOR: mach_msg_descriptor_type_t = 0;
pub const MACH_MSG_OOL_DESCRIPTOR: mach_msg_descriptor_type_t = 1;
pub const MACH_MSG_OOL_PORTS_DESCRIPTOR: mach_msg_descriptor_type_t = 2;
pub const MACH_MSG_OOL_VOLATILE_DESCRIPTOR: mach_msg_descriptor_type_t = 3;

pub const MACH_MSG_OPTION_NONE: mach_msg_option_t = 0x0000_0000;

pub const MACH_SEND_MSG: mach_msg_option_t = 0x0000_0001;
pub const MACH_RCV_MSG: mach_msg_option_t = 0x0000_0002;

pub const MACH_RCV_LARGE: mach_msg_option_t = 0x0000_0004;
pub const MACH_RCV_LARGE_IDENTITY: mach_msg_option_t = 0x0000_0008;

pub const MACH_SEND_TIMEOUT: mach_msg_option_t = 0x0000_0010;
pub const MACH_SEND_INTERRUPT: mach_msg_option_t = 0x0000_0040;
pub const MACH_SEND_NOTIFY: mach_msg_option_t = 0x0000_0080;
pub const MACH_SEND_ALWAYS: mach_msg_option_t = 0x0001_0000;
pub const MACH_SEND_TRAILER: mach_msg_option_t = 0x0002_0000;
pub const MACH_SEND_NOIMPORTANCE: mach_msg_option_t = 0x0004_0000;
pub const MACH_SEND_NODENAP: mach_msg_option_t = MACH_SEND_NOIMPORTANCE;
pub const MACH_SEND_IMPORTANCE: mach_msg_option_t = 0x0008_0000;

pub const MACH_RCV_TIMEOUT: mach_msg_option_t = 0x0000_0100;
pub const MACH_RCV_NOTIFY: mach_msg_option_t = 0x0000_0000;
pub const MACH_RCV_INTERRUPT: mach_msg_option_t = 0x0000_0400;
pub const MACH_RCV_VOUCHER: mach_msg_option_t = 0x0000_0800;
pub const MACH_RCV_OVERWRITE: mach_msg_option_t = 0x0000_0000;

pub const MACH_MSG_SUCCESS: mach_msg_return_t = 0x0000_0000;

pub const MACH_MSG_MASK: mach_msg_return_t = 0x0000_3e00;
pub const MACH_MSG_IPC_SPACE: mach_msg_return_t = 0x0000_2000;
pub const MACH_MSG_VM_SPACE: mach_msg_return_t = 0x0000_1000;
pub const MACH_MSG_IPC_KERNEL: mach_msg_return_t = 0x0000_0800;
pub const MACH_MSG_VM_KERNEL: mach_msg_return_t = 0x0000_0400;

pub const MACH_SEND_IN_PROGRESS: mach_msg_return_t = 0x1000_0001;
pub const MACH_SEND_INVALID_DATA: mach_msg_return_t = 0x1000_0002;
pub const MACH_SEND_INVALID_DEST: mach_msg_return_t = 0x1000_0003;
pub const MACH_SEND_TIMED_OUT: mach_msg_return_t = 0x1000_0004;
pub const MACH_SEND_INVALID_VOUCHER: mach_msg_return_t = 0x1000_0005;
pub const MACH_SEND_INTERRUPTED: mach_msg_return_t = 0x1000_0007;
pub const MACH_SEND_MSG_TOO_SMALL: mach_msg_return_t = 0x1000_0008;
pub const MACH_SEND_INVALID_REPLY: mach_msg_return_t = 0x1000_0009;
pub const MACH_SEND_INVALID_RIGHT: mach_msg_return_t = 0x1000_000a;
pub const MACH_SEND_INVALID_NOTIFY: mach_msg_return_t = 0x1000_000b;
pub const MACH_SEND_INVALID_MEMORY: mach_msg_return_t = 0x1000_000c;
pub const MACH_SEND_NO_BUFFER: mach_msg_return_t = 0x1000_000d;
pub const MACH_SEND_TOO_LARGE: mach_msg_return_t = 0x1000_000e;
pub const MACH_SEND_INVALID_TYPE: mach_msg_return_t = 0x1000_000f;
pub const MACH_SEND_INVALID_HEADER: mach_msg_return_t = 0x1000_0010;
pub const MACH_SEND_INVALID_TRAILER: mach_msg_return_t = 0x1000_0011;
pub const MACH_SEND_INVALID_RT_OOL_SIZE: mach_msg_return_t = 0x1000_0015;

pub const MACH_RCV_IN_PROGRESS: mach_msg_return_t = 0x1000_4001;
pub const MACH_RCV_INVALID_NAME: mach_msg_return_t = 0x1000_4002;
pub const MACH_RCV_TIMED_OUT: mach_msg_return_t = 0x1000_4003;
pub const MACH_RCV_TOO_LARGE: mach_msg_return_t = 0x1000_4004;
pub const MACH_RCV_INTERRUPTED: mach_msg_return_t = 0x1000_4005;
pub const MACH_RCV_PORT_CHANGED: mach_msg_return_t = 0x1000_4006;
pub const MACH_RCV_INVALID_NOTIFY: mach_msg_return_t = 0x1000_4007;
pub const MACH_RCV_INVALID_DATA: mach_msg_return_t = 0x1000_4008;
pub const MACH_RCV_PORT_DIED: mach_msg_return_t = 0x1000_4009;
pub const MACH_RCV_IN_SET: mach_msg_return_t = 0x1000_400a;
pub const MACH_RCV_HEADER_ERROR: mach_msg_return_t = 0x1000_400b;
pub const MACH_RCV_BODY_ERROR: mach_msg_return_t = 0x1000_400c;
pub const MACH_RCV_INVALID_TYPE: mach_msg_return_t = 0x1000_400d;
pub const MACH_RCV_SCATTER_SMALL: mach_msg_return_t = 0x1000_400e;
pub const MACH_RCV_INVALID_TRAILER: mach_msg_return_t = 0x1000_400f;
pub const MACH_RCV_IN_PROGRESS_TIMED: mach_msg_return_t = 0x1000_4011;

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_header_t {
    pub msgh_bits: mach_msg_bits_t,
    pub msgh_size: mach_msg_size_t,
    pub msgh_remote_port: mach_port_t,
    pub msgh_local_port: mach_port_t,
    pub msgh_voucher_port: mach_port_name_t,
    pub msgh_id: mach_msg_id_t,
}

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_body_t {
    pub msgh_descriptor_count: mach_msg_size_t,
}

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_base_t {
    pub header: mach_msg_header_t,
    pub body: mach_msg_body_t,
}

pub const MACH_MSG_TRAILER_FORMAT_0: mach_msg_trailer_type_t = 0;

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_trailer_t {
    pub msgh_trailer_type: mach_msg_trailer_type_t,
    pub msgh_trailer_size: mach_msg_trailer_size_t,
}

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_port_descriptor_t {
    pub name: mach_port_t,
    pub pad1: mach_msg_size_t,
    pub pad2: u16,
    pub disposition: u8, // mach_msg_type_name_t bitfield
    pub type_: u8,       // mach_msg_descriptor_type_t bitfield
}

impl mach_msg_port_descriptor_t {
    pub fn new(name: mach_port_t, disposition: mach_msg_type_name_t) -> Self {
        Self {
            name,
            pad1: 0,
            pad2: 0,
            disposition: disposition as u8,
            type_: MACH_MSG_PORT_DESCRIPTOR as u8,
        }
    }
}

#[repr(C)]
#[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_ool_descriptor_t {
    pub address: *mut ::libc::c_void,
    #[cfg(not(target_pointer_width = "64"))]
    pub size: mach_msg_size_t,
    pub deallocate: u8, // boolean_t bitfield
    pub copy: u8,       // mach_msg_copy_options_t bitfield
    pub pad1: u8,
    pub type_: u8, // mach_msg_descriptor_type_t bitfield
    #[cfg(target_pointer_width = "64")]
    pub size: mach_msg_size_t,
}

impl mach_msg_ool_descriptor_t {
    pub fn new(
        address: *mut ::libc::c_void,
        deallocate: bool,
        copy: mach_msg_copy_options_t,
        size: u32,
    ) -> Self {
        Self {
            address,
            deallocate: if deallocate { 1 } else { 0 },
            copy: copy as u8,
            pad1: 0,
            type_: MACH_MSG_OOL_DESCRIPTOR as u8,
            size,
        }
    }
}

#[repr(C)]
#[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)]
pub struct mach_msg_ool_ports_descriptor_t {
    pub address: *mut ::libc::c_void,
    #[cfg(not(target_pointer_width = "64"))]
    pub count: mach_msg_size_t,
    pub deallocate: u8,  // boolean_t bitfield
    pub copy: u8,        // mach_msg_copy_options_t bitfield
    pub disposition: u8, // mach_msg_type_name_t bitfield
    pub type_: u8,       // mach_msg_descriptor_type_t bitfield
    #[cfg(target_pointer_width = "64")]
    pub count: mach_msg_size_t,
}

extern "C" {
    pub fn mach_msg(
        msg: *mut mach_msg_header_t,
        option: mach_msg_option_t,
        send_size: mach_msg_size_t,
        recv_size: mach_msg_size_t,
        recv_name: mach_port_name_t,
        timeout: mach_msg_timeout_t,
        notify: mach_port_name_t,
    ) -> mach_msg_return_t;

    // from mach/mach.h
    pub fn mach_msg_send(msg: *mut mach_msg_header_t) -> mach_msg_return_t;
    pub fn mach_msg_destroy(msg: *mut mach_msg_header_t);
}

[ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge