Exemplo n.º 1
0
def sysctlbyname(name, return_str=True):
    """Gets a sysctl value by name. If return_str is true, this will return
    a string representation, else it will return the raw value.
    """
    # forked from https://gist.github.com/pudquick/581a71425439f2cf8f09
    size = c_uint(0)
    # Find out how big our buffer will be
    LIBC.sysctlbyname(name, None, byref(size), None, 0)
    # Make the buffer
    buf = create_string_buffer(size.value)
    # Re-run, but provide the buffer
    LIBC.sysctlbyname(name, buf, byref(size), None, 0)
    if return_str:
        return buf.value
    else:
        return buf.raw
Exemplo n.º 2
0
def sysctlbyname(name, return_str=True):
    """Gets a sysctl value by name. If return_str is true, this will return
    a string representation, else it will return the raw value.
    """
    # forked from https://gist.github.com/pudquick/581a71425439f2cf8f09
    size = c_uint(0)
    # Find out how big our buffer will be
    LIBC.sysctlbyname(name, None, byref(size), None, 0)
    # Make the buffer
    buf = create_string_buffer(size.value)
    # Re-run, but provide the buffer
    LIBC.sysctlbyname(name, buf, byref(size), None, 0)
    if return_str:
        return buf.value
    else:
        return buf.raw
Exemplo n.º 3
0
        def _pthread_sigmask(how, signals):
            mask = 0
            for sig in signals:
                mask |= 1 << sig
            oldmask = ctypes.c_ulong()
            mask = ctypes.c_ulong(mask)
            result = LIBC.pthread_sigmask(how, ctypes.byref(mask),
                                          ctypes.byref(oldmask))
            if result:
                raise OSError(result, 'Sigmask error.')

            return {sig for sig in getattr(signal, 'Signals', range(0, 65))
                    if (oldmask.value >> sig) & 1}
Exemplo n.º 4
0
        def _pthread_sigmask(how, signals):
            mask = 0
            for sig in signals:
                mask |= 1 << sig
            oldmask = ctypes.c_ulong()
            mask = ctypes.c_ulong(mask)
            result = LIBC.pthread_sigmask(how, ctypes.byref(mask),
                                          ctypes.byref(oldmask))
            if result:
                raise OSError(result, "Sigmask error.")

            return {
                sig
                for sig in getattr(signal, "Signals", range(0, 65))
                if (oldmask.value >> sig) & 1
            }
Exemplo n.º 5
0
Arquivo: jobs.py Projeto: laerus/xonsh
 def give_terminal_to(pgid):
     omask = ctypes.c_ulong()
     mask = ctypes.c_ulong()
     LIBC.sigemptyset(ctypes.byref(mask))
     for i in _block_when_giving:
         LIBC.sigaddset(ctypes.byref(mask), ctypes.c_int(i))
     LIBC.sigemptyset(ctypes.byref(omask))
     LIBC.sigprocmask(ctypes.c_int(signal.SIG_BLOCK),
                      ctypes.byref(mask),
                      ctypes.byref(omask))
     LIBC.tcsetpgrp(ctypes.c_int(FD_STDERR), ctypes.c_int(pgid))
     LIBC.sigprocmask(ctypes.c_int(signal.SIG_SETMASK),
                      ctypes.byref(omask), None)
     return True
Exemplo n.º 6
0
 def give_terminal_to(pgid):
     omask = ctypes.c_ulong()
     mask = ctypes.c_ulong()
     LIBC.sigemptyset(ctypes.byref(mask))
     for i in _block_when_giving:
         LIBC.sigaddset(ctypes.byref(mask), ctypes.c_int(i))
     LIBC.sigemptyset(ctypes.byref(omask))
     LIBC.sigprocmask(ctypes.c_int(signal.SIG_BLOCK),
                      ctypes.byref(mask), ctypes.byref(omask))
     LIBC.tcsetpgrp(ctypes.c_int(FD_STDERR), ctypes.c_int(pgid))
     LIBC.sigprocmask(ctypes.c_int(signal.SIG_SETMASK),
                      ctypes.byref(omask), None)
     return True