|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v2 9/9] doc: add section about syscall shim layer
Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>
---
doc/guides/developers-app.rst | 49 +++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/doc/guides/developers-app.rst b/doc/guides/developers-app.rst
index bbd3bbda..fdde5dad 100644
--- a/doc/guides/developers-app.rst
+++ b/doc/guides/developers-app.rst
@@ -323,6 +323,55 @@ An example context of extra.ld: ::
This will add the section .uk_fs_list after the .text
+============================
+Syscall shim layer
+============================
+
+If you library provides a syscall, you need to inform Unikraft that it
+can use your implementation. Add a line in you Makefile.uk: ::
+
+ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBYOURLIBNAME) +=
<syscall_name>-<number_of_arguments>
+
+Where `<number_of_arguments>` is how many arguments your syscall accepts.
+
+For example: ::
+
+ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += writev-3
+
+.. note:: Please consult corresponding man page in order to keep API
+ matching to the equivalent linux syscall
+
+For the implementation of you syscall use the following template:
+
+.. code-block:: c
+
+ UK_SYSCALL_DEFINE(syscall_name, arg1_type, arg1_name, arg2_type, arg2_name,
..)
+ {
+ ret = do_cool_stuff();
+ if (ret) {
+ errno = ERROR_CODE;
+ return -1;
+ }
+ return 0;
+ }
+
+For example:
+
+.. code-block:: c
+
+ UK_SYSCALL_DEFINE(writev, unsigned long, fd, const struct iovec *, vec,
+ unsigned long, vlen)
+ {
+ return pwritev(fd, vec, vlen, -1);
+ }
+
+Please note, that syscall_shim expects behavior as described in ``man 2
+syscall``. Namely: ::
+
+ The return value is defined by the system call being invoked. In
+ general, a 0 return value indicates success. A -1 return value
+ indicates an error, and an error code is stored in errno.
+
============================
Make Targets
--
2.19.2
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |