sdfgen 0.16.1__cp313-cp313-macosx_14_0_arm64.whl → 0.18.0__cp313-cp313-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- csdfgen.cpython-313-darwin.so +0 -0
- libcsdfgen.0.18.0.dylib +0 -0
- libcsdfgen.0.dylib +0 -0
- libcsdfgen.dylib +0 -0
- sdfgen/module.py +197 -34
- {sdfgen-0.16.1.dist-info → sdfgen-0.18.0.dist-info}/METADATA +4 -2
- sdfgen-0.18.0.dist-info/RECORD +11 -0
- libcsdfgen.0.16.1.dylib +0 -0
- sdfgen-0.16.1.dist-info/RECORD +0 -11
- {sdfgen-0.16.1.dist-info → sdfgen-0.18.0.dist-info}/WHEEL +0 -0
- {sdfgen-0.16.1.dist-info → sdfgen-0.18.0.dist-info}/top_level.txt +0 -0
csdfgen.cpython-313-darwin.so
CHANGED
Binary file
|
libcsdfgen.0.18.0.dylib
ADDED
Binary file
|
libcsdfgen.0.dylib
CHANGED
Binary file
|
libcsdfgen.dylib
CHANGED
Binary file
|
sdfgen/module.py
CHANGED
@@ -2,11 +2,12 @@ from __future__ import annotations
|
|
2
2
|
import ctypes
|
3
3
|
import importlib.util
|
4
4
|
from ctypes import (
|
5
|
-
cast, c_void_p, c_char_p, c_uint8, c_uint16, c_uint32, c_uint64, c_bool, POINTER, byref
|
5
|
+
cast, c_void_p, c_char_p, c_uint8, c_uint16, c_uint32, c_uint64, c_bool, POINTER, byref, pointer
|
6
6
|
)
|
7
7
|
from typing import Optional, List, Tuple
|
8
8
|
from enum import IntEnum
|
9
9
|
|
10
|
+
|
10
11
|
class SddfStatus(IntEnum):
|
11
12
|
OK = 0,
|
12
13
|
DUPLICATE_CLIENT = 1,
|
@@ -14,6 +15,7 @@ class SddfStatus(IntEnum):
|
|
14
15
|
NET_DUPLICATE_COPIER = 100,
|
15
16
|
NET_DUPLICATE_MAC_ADDR = 101,
|
16
17
|
|
18
|
+
|
17
19
|
# TOOD: double check
|
18
20
|
MapPermsType = c_uint32
|
19
21
|
|
@@ -58,7 +60,15 @@ libsdfgen.sdfgen_render.restype = c_char_p
|
|
58
60
|
libsdfgen.sdfgen_render.argtypes = [c_void_p]
|
59
61
|
|
60
62
|
libsdfgen.sdfgen_channel_create.restype = c_void_p
|
61
|
-
libsdfgen.sdfgen_channel_create.argtypes = [
|
63
|
+
libsdfgen.sdfgen_channel_create.argtypes = [
|
64
|
+
c_void_p,
|
65
|
+
c_void_p,
|
66
|
+
POINTER(c_uint8),
|
67
|
+
POINTER(c_uint8),
|
68
|
+
POINTER(c_bool),
|
69
|
+
POINTER(c_bool),
|
70
|
+
POINTER(c_uint8),
|
71
|
+
]
|
62
72
|
libsdfgen.sdfgen_channel_destroy.restype = None
|
63
73
|
libsdfgen.sdfgen_channel_destroy.argtypes = [c_void_p]
|
64
74
|
libsdfgen.sdfgen_channel_get_pd_a_id.restype = c_uint8
|
@@ -75,6 +85,9 @@ libsdfgen.sdfgen_mr_create.restype = c_void_p
|
|
75
85
|
libsdfgen.sdfgen_mr_create.argtypes = [c_char_p, c_uint64]
|
76
86
|
libsdfgen.sdfgen_mr_create_physical.restype = c_void_p
|
77
87
|
libsdfgen.sdfgen_mr_create_physical.argtypes = [c_char_p, c_uint64, c_uint64]
|
88
|
+
libsdfgen.sdfgen_mr_get_paddr.restype = c_bool;
|
89
|
+
libsdfgen.sdfgen_mr_get_paddr.argtypes = [c_void_p, POINTER(c_uint64)]
|
90
|
+
|
78
91
|
libsdfgen.sdfgen_mr_destroy.restype = None
|
79
92
|
libsdfgen.sdfgen_mr_destroy.argtypes = [c_void_p]
|
80
93
|
|
@@ -88,6 +101,9 @@ libsdfgen.sdfgen_vm_create.argtypes = [c_char_p, POINTER(c_void_p), c_uint32]
|
|
88
101
|
libsdfgen.sdfgen_vm_destroy.restype = None
|
89
102
|
libsdfgen.sdfgen_vm_destroy.argtypes = [c_void_p]
|
90
103
|
|
104
|
+
libsdfgen.sdfgen_vm_set_priority.restype = None
|
105
|
+
libsdfgen.sdfgen_vm_set_priority.argtypes = [c_void_p, c_uint8]
|
106
|
+
|
91
107
|
libsdfgen.sdfgen_vm_add_map.restype = None
|
92
108
|
libsdfgen.sdfgen_vm_add_map.argtypes = [c_void_p, c_void_p]
|
93
109
|
|
@@ -196,15 +212,40 @@ libsdfgen.sdfgen_sddf_gpu_serialise_config.restype = c_bool
|
|
196
212
|
libsdfgen.sdfgen_sddf_gpu_serialise_config.argtypes = [c_void_p, c_char_p]
|
197
213
|
|
198
214
|
libsdfgen.sdfgen_vmm.restype = c_void_p
|
199
|
-
libsdfgen.sdfgen_vmm.argtypes = [
|
215
|
+
libsdfgen.sdfgen_vmm.argtypes = [
|
216
|
+
c_void_p,
|
217
|
+
c_void_p,
|
218
|
+
c_void_p,
|
219
|
+
c_void_p,
|
220
|
+
c_uint64,
|
221
|
+
c_bool
|
222
|
+
]
|
200
223
|
libsdfgen.sdfgen_vmm_add_passthrough_device.restype = c_bool
|
201
|
-
libsdfgen.sdfgen_vmm_add_passthrough_device.argtypes = [
|
224
|
+
libsdfgen.sdfgen_vmm_add_passthrough_device.argtypes = [
|
225
|
+
c_void_p,
|
226
|
+
c_void_p,
|
227
|
+
]
|
228
|
+
libsdfgen.sdfgen_vmm_add_passthrough_device_regions.restype = c_bool
|
229
|
+
libsdfgen.sdfgen_vmm_add_passthrough_device_regions.argtypes = [
|
230
|
+
c_void_p,
|
231
|
+
c_void_p,
|
232
|
+
POINTER(c_uint8),
|
233
|
+
c_uint8,
|
234
|
+
]
|
235
|
+
libsdfgen.sdfgen_vmm_add_passthrough_device_irqs.argtypes = [
|
236
|
+
c_void_p,
|
237
|
+
c_void_p,
|
238
|
+
POINTER(c_uint8),
|
239
|
+
c_uint8,
|
240
|
+
]
|
202
241
|
libsdfgen.sdfgen_vmm_add_passthrough_irq.restype = c_bool
|
203
242
|
libsdfgen.sdfgen_vmm_add_passthrough_irq.argtypes = [c_void_p, c_void_p]
|
204
243
|
libsdfgen.sdfgen_vmm_add_virtio_mmio_console.restype = c_bool
|
205
244
|
libsdfgen.sdfgen_vmm_add_virtio_mmio_console.argtypes = [c_void_p, c_void_p, c_void_p]
|
206
245
|
libsdfgen.sdfgen_vmm_add_virtio_mmio_blk.restype = c_bool
|
207
246
|
libsdfgen.sdfgen_vmm_add_virtio_mmio_blk.argtypes = [c_void_p, c_void_p, c_void_p, c_uint32]
|
247
|
+
libsdfgen.sdfgen_vmm_add_virtio_mmio_net.restype = c_bool
|
248
|
+
libsdfgen.sdfgen_vmm_add_virtio_mmio_net.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p, c_char_p]
|
208
249
|
libsdfgen.sdfgen_vmm_connect.restype = c_bool
|
209
250
|
libsdfgen.sdfgen_vmm_connect.argtypes = [c_void_p]
|
210
251
|
libsdfgen.sdfgen_vmm_serialise_config.restype = c_bool
|
@@ -217,7 +258,18 @@ libsdfgen.sdfgen_lionsos_fs_fat_connect.argtypes = [c_void_p]
|
|
217
258
|
libsdfgen.sdfgen_lionsos_fs_fat_serialise_config.restype = c_bool
|
218
259
|
libsdfgen.sdfgen_lionsos_fs_fat_serialise_config.argtypes = [c_void_p, c_char_p]
|
219
260
|
libsdfgen.sdfgen_lionsos_fs_nfs.restype = c_void_p
|
220
|
-
libsdfgen.sdfgen_lionsos_fs_nfs.argtypes = [
|
261
|
+
libsdfgen.sdfgen_lionsos_fs_nfs.argtypes = [
|
262
|
+
c_void_p,
|
263
|
+
c_void_p,
|
264
|
+
c_void_p,
|
265
|
+
c_void_p,
|
266
|
+
c_void_p,
|
267
|
+
c_char_p,
|
268
|
+
c_void_p,
|
269
|
+
c_void_p,
|
270
|
+
c_char_p,
|
271
|
+
c_char_p
|
272
|
+
]
|
221
273
|
libsdfgen.sdfgen_lionsos_fs_nfs_connect.restype = c_bool
|
222
274
|
libsdfgen.sdfgen_lionsos_fs_nfs_connect.argtypes = [c_void_p]
|
223
275
|
libsdfgen.sdfgen_lionsos_fs_nfs_serialise_config.restype = c_bool
|
@@ -230,6 +282,28 @@ libsdfgen.sdfgen_sddf_lwip_connect.argtypes = [c_void_p]
|
|
230
282
|
libsdfgen.sdfgen_sddf_lwip_serialise_config.restype = c_bool
|
231
283
|
libsdfgen.sdfgen_sddf_lwip_serialise_config.argtypes = [c_void_p, c_char_p]
|
232
284
|
|
285
|
+
def ffi_uint8_ptr(n: Optional[int]):
|
286
|
+
"""
|
287
|
+
Convert an int value to a uint8_t pointer for FFI.
|
288
|
+
If 'n' is None then we return None (which acts as a null pointer)
|
289
|
+
"""
|
290
|
+
if n is None:
|
291
|
+
return None
|
292
|
+
|
293
|
+
return pointer(c_uint8(n))
|
294
|
+
|
295
|
+
|
296
|
+
def ffi_bool_ptr(val: Optional[bool]):
|
297
|
+
"""
|
298
|
+
Convert a bool value to a bool pointer for FFI.
|
299
|
+
If 'val' is None then we return None (which acts as a null pointer)
|
300
|
+
"""
|
301
|
+
if val is None:
|
302
|
+
return None
|
303
|
+
|
304
|
+
return pointer(c_bool(val))
|
305
|
+
|
306
|
+
|
233
307
|
class DeviceTree:
|
234
308
|
"""
|
235
309
|
This class exists to allow other layers to be generic to boards or architectures
|
@@ -367,7 +441,7 @@ class SystemDescription:
|
|
367
441
|
def add_map(self, map: SystemDescription.Map):
|
368
442
|
libsdfgen.sdfgen_pd_add_map(self._obj, map._obj)
|
369
443
|
|
370
|
-
def add_irq(self,
|
444
|
+
def add_irq(self, irq: SystemDescription.Irq) -> int:
|
371
445
|
return libsdfgen.sdfgen_pd_add_irq(self._obj, irq._obj)
|
372
446
|
|
373
447
|
def set_virtual_machine(self, vm: SystemDescription.VirtualMachine):
|
@@ -381,8 +455,8 @@ class SystemDescription:
|
|
381
455
|
def __repr__(self) -> str:
|
382
456
|
return f"ProtectionDomain({self.name})"
|
383
457
|
|
384
|
-
# TODO: __del__ is more complicated for virtual machine since it may be owned
|
385
|
-
# meaning it would result in a double free
|
458
|
+
# TODO: __del__ is more complicated for virtual machine since it may be owned
|
459
|
+
# by a protection domain meaning it would result in a double free
|
386
460
|
class VirtualMachine:
|
387
461
|
_name: str
|
388
462
|
_obj: c_void_p
|
@@ -392,12 +466,14 @@ class SystemDescription:
|
|
392
466
|
# TODO: error checking
|
393
467
|
self._obj = libsdfgen.sdfgen_vm_vcpu_create(id, cpu)
|
394
468
|
|
395
|
-
def __init__(self, name: str, vcpus: List[Vcpu]):
|
469
|
+
def __init__(self, name: str, vcpus: List[Vcpu], priority: Optional[int] = None):
|
396
470
|
vcpus_tuple: Tuple[c_void_p] = tuple([vcpu._obj for vcpu in vcpus])
|
397
471
|
c_vcpus = (c_void_p * len(vcpus))(*vcpus_tuple)
|
398
472
|
c_name = c_char_p(name.encode("utf-8"))
|
399
473
|
self._name = name
|
400
474
|
self._obj = libsdfgen.sdfgen_vm_create(c_name, cast(c_vcpus, POINTER(c_void_p)), len(vcpus))
|
475
|
+
if priority is not None:
|
476
|
+
libsdfgen.sdfgen_vm_set_priority(self._obj, priority)
|
401
477
|
|
402
478
|
@property
|
403
479
|
def name(self) -> str:
|
@@ -456,6 +532,15 @@ class SystemDescription:
|
|
456
532
|
else:
|
457
533
|
self._obj = libsdfgen.sdfgen_mr_create(c_name, size)
|
458
534
|
|
535
|
+
@property
|
536
|
+
def paddr(self):
|
537
|
+
paddr = c_uint64(0)
|
538
|
+
has_paddr = libsdfgen.sdfgen_mr_get_paddr(self._obj, pointer(paddr))
|
539
|
+
if has_paddr:
|
540
|
+
return paddr
|
541
|
+
else:
|
542
|
+
return None
|
543
|
+
|
459
544
|
def __del__(self):
|
460
545
|
libsdfgen.sdfgen_mr_destroy(self._obj)
|
461
546
|
|
@@ -475,18 +560,36 @@ class SystemDescription:
|
|
475
560
|
class Channel:
|
476
561
|
_obj: c_void_p
|
477
562
|
|
478
|
-
# TODO: handle options
|
479
563
|
def __init__(
|
480
564
|
self,
|
481
565
|
a: SystemDescription.ProtectionDomain,
|
482
566
|
b: SystemDescription.ProtectionDomain,
|
483
567
|
*,
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
568
|
+
a_id: Optional[int] = None,
|
569
|
+
b_id: Optional[int] = None,
|
570
|
+
pp_a: Optional[bool] = None,
|
571
|
+
pp_b: Optional[bool] = None,
|
572
|
+
notify_a: Optional[bool] = None,
|
573
|
+
notify_b: Optional[bool] = None,
|
488
574
|
) -> None:
|
489
|
-
|
575
|
+
c_pp = None
|
576
|
+
if pp_a is not None:
|
577
|
+
c_pp = 0
|
578
|
+
elif pp_b is not None:
|
579
|
+
c_pp = 1
|
580
|
+
|
581
|
+
if pp_a is not None and pp_b is not None:
|
582
|
+
raise Exception("attempting to create channel with PP on both ends")
|
583
|
+
|
584
|
+
self._obj = libsdfgen.sdfgen_channel_create(
|
585
|
+
a._obj,
|
586
|
+
b._obj,
|
587
|
+
ffi_uint8_ptr(a_id),
|
588
|
+
ffi_uint8_ptr(b_id),
|
589
|
+
ffi_bool_ptr(notify_a),
|
590
|
+
ffi_bool_ptr(notify_b),
|
591
|
+
ffi_uint8_ptr(c_pp),
|
592
|
+
)
|
490
593
|
|
491
594
|
@property
|
492
595
|
def pd_a_id(self) -> int:
|
@@ -713,7 +816,9 @@ class Sddf:
|
|
713
816
|
:param mac_addr: must be unique to the Network system.
|
714
817
|
"""
|
715
818
|
if mac_addr is not None and len(mac_addr) != 17:
|
716
|
-
raise Exception(
|
819
|
+
raise Exception(
|
820
|
+
f"invalid MAC address length for client '{client.name}', {mac_addr}"
|
821
|
+
)
|
717
822
|
|
718
823
|
c_mac_addr = c_char_p(0)
|
719
824
|
if mac_addr is not None:
|
@@ -818,45 +923,74 @@ class Sddf:
|
|
818
923
|
|
819
924
|
def __del__(self):
|
820
925
|
libsdfgen.sdfgen_sddf_gpu_destroy(self._obj)
|
821
|
-
|
926
|
+
|
822
927
|
class Lwip:
|
823
928
|
_obj: c_void_p
|
824
929
|
|
825
930
|
def __init__(
|
826
931
|
self,
|
827
932
|
sdf: SystemDescription,
|
828
|
-
net: Net,
|
829
|
-
pd: ProtectionDomain
|
933
|
+
net: Sddf.Net,
|
934
|
+
pd: SystemDescription.ProtectionDomain
|
830
935
|
) -> None:
|
831
936
|
self._obj = libsdfgen.sdfgen_sddf_lwip(sdf._obj, net._obj, pd._obj)
|
832
|
-
|
937
|
+
|
833
938
|
def connect(self) -> bool:
|
834
939
|
return libsdfgen.sdfgen_sddf_lwip_connect(self._obj)
|
835
|
-
|
940
|
+
|
836
941
|
def serialise_config(self, output_dir: str) -> bool:
|
837
942
|
c_output_dir = c_char_p(output_dir.encode("utf-8"))
|
838
943
|
return libsdfgen.sdfgen_sddf_lwip_serialise_config(self._obj, c_output_dir)
|
839
944
|
|
945
|
+
|
840
946
|
class Vmm:
|
841
947
|
_obj: c_void_p
|
842
948
|
|
843
949
|
def __init__(
|
844
950
|
self,
|
845
951
|
sdf: SystemDescription,
|
846
|
-
vmm: ProtectionDomain,
|
847
|
-
vm: VirtualMachine,
|
952
|
+
vmm: SystemDescription.ProtectionDomain,
|
953
|
+
vm: SystemDescription.VirtualMachine,
|
848
954
|
dtb: DeviceTree,
|
849
955
|
*,
|
850
|
-
one_to_one_ram: bool=False,
|
956
|
+
one_to_one_ram: bool = False,
|
851
957
|
):
|
852
958
|
self._obj = libsdfgen.sdfgen_vmm(sdf._obj, vmm._obj, vm._obj, dtb._obj, dtb.size, one_to_one_ram)
|
853
959
|
|
854
|
-
def add_passthrough_device(
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
960
|
+
def add_passthrough_device(
|
961
|
+
self,
|
962
|
+
device: DeviceTree.Node,
|
963
|
+
*,
|
964
|
+
regions: Optional[List[int]] = None,
|
965
|
+
irqs: Optional[List[int]] = None
|
966
|
+
):
|
967
|
+
"""
|
968
|
+
Add pass-through access to a particular device based on its DTB node.
|
969
|
+
:param regions: list of indices into the 'reg' field of the device to be mapped in. If None
|
970
|
+
then every region passed through.
|
971
|
+
:param irqs: list of indices into the 'interrupts' field of the device to be created. If None
|
972
|
+
then every IRQ is passed through.
|
973
|
+
"""
|
974
|
+
if regions is None and irqs is None:
|
975
|
+
# If the user passed None, that means we need to map everything in
|
976
|
+
return libsdfgen.sdfgen_vmm_add_passthrough_device(self._obj, device._obj)
|
977
|
+
elif irqs is not None:
|
978
|
+
# Pass through specific IRQs, all regions
|
979
|
+
c_irqs = cast((c_uint8 * len(irqs))(*irqs), POINTER(c_uint8))
|
980
|
+
irqs_len = len(irqs)
|
981
|
+
ret = libsdfgen.sdfgen_vmm_add_passthrough_device_irqs(self._obj, device._obj, c_irqs, irqs_len)
|
982
|
+
ret = libsdfgen.sdfgen_vmm_add_passthrough_device_regions(self._obj, device._obj, None, 0)
|
983
|
+
elif regions is not None:
|
984
|
+
# Pass through specific regions, all IRQs
|
985
|
+
c_regions = cast((c_uint8 * len(regions))(*regions), POINTER(c_uint8))
|
986
|
+
regions_len = len(regions)
|
987
|
+
ret = libsdfgen.sdfgen_vmm_add_passthrough_device_regions(self._obj, device._obj, c_regions, regions_len)
|
988
|
+
ret = libsdfgen.sdfgen_vmm_add_passthrough_device_irqs(self._obj, device._obj, None, 0)
|
989
|
+
else:
|
990
|
+
# unreachable case
|
991
|
+
raise Exception("internal error")
|
992
|
+
|
993
|
+
def add_passthrough_irq(self, irq: SystemDescription.Irq):
|
860
994
|
return libsdfgen.sdfgen_vmm_add_passthrough_irq(self._obj, irq._obj)
|
861
995
|
|
862
996
|
def add_virtio_mmio_console(self, device: DeviceTree.Node, serial: Sddf.Serial):
|
@@ -865,8 +999,24 @@ class Vmm:
|
|
865
999
|
def add_virtio_mmio_blk(self, device: DeviceTree.Node, blk: Sddf.Blk, *, partition: int):
|
866
1000
|
return libsdfgen.sdfgen_vmm_add_virtio_mmio_blk(self._obj, device._obj, blk._obj, partition)
|
867
1001
|
|
868
|
-
|
869
|
-
|
1002
|
+
def add_virtio_mmio_net(
|
1003
|
+
self,
|
1004
|
+
device: DeviceTree.Node,
|
1005
|
+
net: Sddf.Net,
|
1006
|
+
copier: SystemDescription.ProtectionDomain,
|
1007
|
+
*,
|
1008
|
+
mac_addr: Optional[str] = None
|
1009
|
+
):
|
1010
|
+
if mac_addr is not None and len(mac_addr) != 17:
|
1011
|
+
raise Exception(
|
1012
|
+
f"invalid MAC address length for '{mac_addr}'"
|
1013
|
+
)
|
1014
|
+
|
1015
|
+
c_mac_addr = c_char_p(0)
|
1016
|
+
if mac_addr is not None:
|
1017
|
+
c_mac_addr = c_char_p(mac_addr.encode("utf-8"))
|
1018
|
+
|
1019
|
+
return libsdfgen.sdfgen_vmm_add_virtio_mmio_net(self._obj, device._obj, net._obj, copier._obj, c_mac_addr)
|
870
1020
|
|
871
1021
|
def connect(self) -> bool:
|
872
1022
|
return libsdfgen.sdfgen_vmm_connect(self._obj)
|
@@ -918,7 +1068,9 @@ class LionsOs:
|
|
918
1068
|
export_path: str,
|
919
1069
|
):
|
920
1070
|
if mac_addr is not None and len(mac_addr) != 17:
|
921
|
-
raise Exception(
|
1071
|
+
raise Exception(
|
1072
|
+
f"invalid MAC address length for client '{client.name}', {mac_addr}"
|
1073
|
+
)
|
922
1074
|
|
923
1075
|
c_mac_addr = c_char_p(0)
|
924
1076
|
if mac_addr is not None:
|
@@ -928,7 +1080,18 @@ class LionsOs:
|
|
928
1080
|
c_server = c_char_p(server.encode("utf-8"))
|
929
1081
|
c_export_path = c_char_p(export_path.encode("utf-8"))
|
930
1082
|
|
931
|
-
self._obj = libsdfgen.sdfgen_lionsos_fs_nfs(
|
1083
|
+
self._obj = libsdfgen.sdfgen_lionsos_fs_nfs(
|
1084
|
+
sdf._obj,
|
1085
|
+
fs._obj,
|
1086
|
+
client._obj,
|
1087
|
+
net._obj,
|
1088
|
+
net_copier._obj,
|
1089
|
+
c_mac_addr,
|
1090
|
+
serial._obj,
|
1091
|
+
timer._obj,
|
1092
|
+
c_server,
|
1093
|
+
c_export_path
|
1094
|
+
)
|
932
1095
|
|
933
1096
|
def connect(self) -> bool:
|
934
1097
|
return libsdfgen.sdfgen_lionsos_fs_nfs_connect(self._obj)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: sdfgen
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.18.0
|
4
4
|
Summary: Automating the creation of Microkit System Description Files (SDF)
|
5
5
|
Home-page: https://github.com/au-ts/microkit_sdf_gen
|
6
6
|
Description-Content-Type: text/markdown
|
@@ -24,11 +24,13 @@ Microkit-based systems.
|
|
24
24
|
|
25
25
|
The sdfgen tooling (name temporary) contains libraries for programmatically
|
26
26
|
creating:
|
27
|
+
|
27
28
|
* Microkit System Description Files (SDF)
|
28
29
|
* systems using the seL4 Device Driver Framework (sDDF)
|
29
30
|
* systems using LionsOS
|
30
31
|
|
31
32
|
It has first-class support for use in the following languages:
|
33
|
+
|
32
34
|
* C
|
33
35
|
* Python
|
34
36
|
* Zig
|
@@ -47,7 +49,7 @@ Pre-built archives of the C library are available in each
|
|
47
49
|
|
48
50
|
### Dependencies
|
49
51
|
|
50
|
-
* Zig (`0.14.0-dev.
|
52
|
+
* Zig (`0.14.0-dev.3050+d72f3d353` or higher)
|
51
53
|
* See https://ziglang.org/download/, until 0.14.0 is released we rely on a
|
52
54
|
master version of Zig. Once 0.14.0 is released (most likely Feb'25) we can
|
53
55
|
pin to that release.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
csdfgen.cpython-313-darwin.so,sha256=51jeaoQJZIMspeWLzFOeVz8k5Mrw9Bt9N6Ps-8vjSH8,759816
|
2
|
+
libcsdfgen.0.18.0.dylib,sha256=51jeaoQJZIMspeWLzFOeVz8k5Mrw9Bt9N6Ps-8vjSH8,759816
|
3
|
+
libcsdfgen.0.dylib,sha256=51jeaoQJZIMspeWLzFOeVz8k5Mrw9Bt9N6Ps-8vjSH8,759816
|
4
|
+
libcsdfgen.dylib,sha256=51jeaoQJZIMspeWLzFOeVz8k5Mrw9Bt9N6Ps-8vjSH8,759816
|
5
|
+
sdfgen/__init__.py,sha256=_d7GGV8GhadIAEYP8uiJlez0yKtXnHMHdRkRzVMKS3c,143
|
6
|
+
sdfgen/module.py,sha256=lDfOUdrj6Sw-Aw8dxjtNLrsxYa8K1ZNzyuR0rifcVqQ,40387
|
7
|
+
sdfgen/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
+
sdfgen-0.18.0.dist-info/METADATA,sha256=-tM82ZmR6CcgqMTq0QyMw5-1QxbNjfDgB_eVRnA81c0,4654
|
9
|
+
sdfgen-0.18.0.dist-info/WHEEL,sha256=wajf2RmtLcyDhlr_PKgNyLmxD2pJHORwHzFCayrprrU,109
|
10
|
+
sdfgen-0.18.0.dist-info/top_level.txt,sha256=M3gUW9vTMij10peQKgv1Qs0jZkdsk_PG0REFxuv6jNY,15
|
11
|
+
sdfgen-0.18.0.dist-info/RECORD,,
|
libcsdfgen.0.16.1.dylib
DELETED
Binary file
|
sdfgen-0.16.1.dist-info/RECORD
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
csdfgen.cpython-313-darwin.so,sha256=WKrWhuKyBHKdBBn-q9ytwmPTf51UZno99-dcOy5fSDw,730824
|
2
|
-
libcsdfgen.0.16.1.dylib,sha256=WKrWhuKyBHKdBBn-q9ytwmPTf51UZno99-dcOy5fSDw,730824
|
3
|
-
libcsdfgen.0.dylib,sha256=WKrWhuKyBHKdBBn-q9ytwmPTf51UZno99-dcOy5fSDw,730824
|
4
|
-
libcsdfgen.dylib,sha256=WKrWhuKyBHKdBBn-q9ytwmPTf51UZno99-dcOy5fSDw,730824
|
5
|
-
sdfgen/__init__.py,sha256=_d7GGV8GhadIAEYP8uiJlez0yKtXnHMHdRkRzVMKS3c,143
|
6
|
-
sdfgen/module.py,sha256=cIv7e3k3RUn4JY9oLzK2VJowjp29dwp9bevvOiwnOu4,35769
|
7
|
-
sdfgen/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
-
sdfgen-0.16.1.dist-info/METADATA,sha256=8dDOff9zrETLBN9nMKnXf4fYVtUZQ04YQ4l0lNMxWoI,4652
|
9
|
-
sdfgen-0.16.1.dist-info/WHEEL,sha256=wajf2RmtLcyDhlr_PKgNyLmxD2pJHORwHzFCayrprrU,109
|
10
|
-
sdfgen-0.16.1.dist-info/top_level.txt,sha256=M3gUW9vTMij10peQKgv1Qs0jZkdsk_PG0REFxuv6jNY,15
|
11
|
-
sdfgen-0.16.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|