summaryrefslogtreecommitdiff
path: root/share/docs/ideas/kport.txt
blob: de3a4b0c2064f38b5f4bafa467eb672d148bcdda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Copyright(c) Mon Apr 14 02:17:02 AM EDT 2025    Ian M. Moffett, OSMORA
---------------------------------------------------------------------------
***************************************************************************
All use of any articles/subjects from this doucment MUST retain ALL and ANY
forms of credit included. ALL Corporate and Government entities MUST
contact ian@osmora.org WITH intent of use BEFORE consideration of usage.
***************************************************************************

Author: Ian M. Moffett
Description: KPORT facilitates seamless low-latency access to dedicated
             kernel structures securely, while bypassing the need for
             syscalls.
---------------------------------------------------------------------------
                 ubuf
                  |
                kport
                  |
                shadow
                  |
                scache        [write-through shadow cache]
                  |
               resource



               resource (write)
                     \
                      \
                       [write]
                         \
                          \
                           scache
                          /
                         /
                   shadow
                       /
                      /
                    kport [r/w]
                    /
                ubuf


            struct resource_ops {
                void(*read)(...);
                void(*write)(...)
            };


            struct resource {
                void *data;
                size_t size;
                ...
                struct resource_ops rops;  /* not the spooky kind! */
            };

---------------------------------------------------------------------------
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.
---------------------------------------------------------------------------
     * configurable in sys/arch/<arch>/conf/ *
                       |
                       |
            kport_allocz(page_count)
                     \
                      [pool]

             Semantics:
                - All accesses MUST be aligned by the machine word size (-EFAULT otherwise)
                - The size of each access MUST be compared with the kport pool size (-EFAULT otherwise)
                - The kport pool MUST have no low-level memory caching
             Notes:
                The shadow layer exists as a sandbox to isolate the backing resource
                between itself and the kport layer. It SHOULD contain a "shadow byte region"
                (SBR), that is, an area reserved for shadow bytes used to detect clobbering
                and allowing the kernel to respond accordingly (i.e., defer next write-back
                and kill the process, among other things...)