diff --git a/tractor/ipc/__init__.py b/tractor/ipc/__init__.py
index c0b58951..59fc1e16 100644
--- a/tractor/ipc/__init__.py
+++ b/tractor/ipc/__init__.py
@@ -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 .
+
+
import platform
from ._chan import (
diff --git a/tractor/ipc/_linux.py b/tractor/ipc/_linux.py
index 53feac6a..12b00260 100644
--- a/tractor/ipc/_linux.py
+++ b/tractor/ipc/_linux.py
@@ -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 .
+'''
+Linux specifics, for now we are only exposing EventFD
+
+'''
import os
import errno
@@ -27,6 +45,7 @@ ffi.cdef(
# Open the default dynamic library (essentially 'libc' in most cases)
C = ffi.dlopen(None)
+
# Constants from , if needed.
EFD_SEMAPHORE = 1
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')
return fd
+
def write_eventfd(fd: int, value: int) -> int:
'''
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')
return ret
+
def read_eventfd(fd: int) -> int:
'''
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)
return value
+
def close_eventfd(fd: int) -> int:
'''
Close the eventfd.
diff --git a/tractor/ipc/_ringbuf.py b/tractor/ipc/_ringbuf.py
index 0895381f..50a9eff1 100644
--- a/tractor/ipc/_ringbuf.py
+++ b/tractor/ipc/_ringbuf.py
@@ -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 .
+'''
+IPC Reliable RingBuffer implementation
+
+'''
from multiprocessing.shared_memory import SharedMemory
import trio