Add module headers and fix spacing on tractor._ipc._linux
parent
1819c026d1
commit
75d7757017
|
@ -1,3 +1,20 @@
|
||||||
|
# tractor: structured concurrent "actors".
|
||||||
|
# Copyright 2018-eternity Tyler Goodlet.
|
||||||
|
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
from ._chan import (
|
from ._chan import (
|
||||||
|
|
|
@ -1,4 +1,22 @@
|
||||||
|
# tractor: structured concurrent "actors".
|
||||||
|
# Copyright 2018-eternity Tyler Goodlet.
|
||||||
|
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
'''
|
||||||
|
Linux specifics, for now we are only exposing EventFD
|
||||||
|
|
||||||
|
'''
|
||||||
import os
|
import os
|
||||||
import errno
|
import errno
|
||||||
|
|
||||||
|
@ -27,6 +45,7 @@ ffi.cdef(
|
||||||
# Open the default dynamic library (essentially 'libc' in most cases)
|
# Open the default dynamic library (essentially 'libc' in most cases)
|
||||||
C = ffi.dlopen(None)
|
C = ffi.dlopen(None)
|
||||||
|
|
||||||
|
|
||||||
# Constants from <sys/eventfd.h>, if needed.
|
# Constants from <sys/eventfd.h>, if needed.
|
||||||
EFD_SEMAPHORE = 1
|
EFD_SEMAPHORE = 1
|
||||||
EFD_CLOEXEC = 0o2000000
|
EFD_CLOEXEC = 0o2000000
|
||||||
|
@ -44,6 +63,7 @@ def open_eventfd(initval: int = 0, flags: int = 0) -> int:
|
||||||
raise OSError(errno.errorcode[ffi.errno], 'eventfd failed')
|
raise OSError(errno.errorcode[ffi.errno], 'eventfd failed')
|
||||||
return fd
|
return fd
|
||||||
|
|
||||||
|
|
||||||
def write_eventfd(fd: int, value: int) -> int:
|
def write_eventfd(fd: int, value: int) -> int:
|
||||||
'''
|
'''
|
||||||
Write a 64-bit integer (uint64_t) to the eventfd's counter.
|
Write a 64-bit integer (uint64_t) to the eventfd's counter.
|
||||||
|
@ -59,6 +79,7 @@ def write_eventfd(fd: int, value: int) -> int:
|
||||||
raise OSError(errno.errorcode[ffi.errno], 'write to eventfd failed')
|
raise OSError(errno.errorcode[ffi.errno], 'write to eventfd failed')
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def read_eventfd(fd: int) -> int:
|
def read_eventfd(fd: int) -> int:
|
||||||
'''
|
'''
|
||||||
Read a 64-bit integer (uint64_t) from the eventfd, returning the value.
|
Read a 64-bit integer (uint64_t) from the eventfd, returning the value.
|
||||||
|
@ -76,6 +97,7 @@ def read_eventfd(fd: int) -> int:
|
||||||
value = int.from_bytes(data_bytes, byteorder='little', signed=False)
|
value = int.from_bytes(data_bytes, byteorder='little', signed=False)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
def close_eventfd(fd: int) -> int:
|
def close_eventfd(fd: int) -> int:
|
||||||
'''
|
'''
|
||||||
Close the eventfd.
|
Close the eventfd.
|
||||||
|
|
|
@ -1,3 +1,22 @@
|
||||||
|
# tractor: structured concurrent "actors".
|
||||||
|
# Copyright 2018-eternity Tyler Goodlet.
|
||||||
|
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
'''
|
||||||
|
IPC Reliable RingBuffer implementation
|
||||||
|
|
||||||
|
'''
|
||||||
from multiprocessing.shared_memory import SharedMemory
|
from multiprocessing.shared_memory import SharedMemory
|
||||||
|
|
||||||
import trio
|
import trio
|
||||||
|
|
Loading…
Reference in New Issue