[RFC v7 00/21] Unifying LKL into UML

Anton Ivanov anton.ivanov at cambridgegreys.com
Wed Oct 7 09:30:03 EDT 2020


On 06/10/2020 10:44, Hajime Tazaki wrote:
> This is another spin of the unification of LKL into UML.  Based on the
> discussion of v4 patchset, we have tried to address issue raised and
> rewrote the patchset from scratch.  The summary is listed in the
> changelog below.
>
> Although there are still bugs in the patchset, we'd like to ask your
> opinions on the design we changed.
>
> The milestone section is also updated: this patchset is for the
> milestone 1, though the common init API is still not implemented yet.
>
>
> Changes in rfc v7:
> - preserve `make ARCH=um` syntax to build UML
> - introduce `make ARCH=um UMMODE=library` to build library mode
> - fix undefined symbols issue during modpost
> - clean up makefiles (arch/um, tools/um)

Hi Hajime, hi Tavi,

Our starting point should be that it does not break the existing build. It still does.

If I build a "stock configuration" UML after applying the patchset the resulting vmlinux is not executable.

On the positive side, it builds cleanly now. I will try to go through the rest of the patchset later today and see if there is anything else that needs fixing before we do the next version.

Brgds,

A.

>
> Changes in rfc v6:
> - rebase with the current linus tree
>
> Changes in rfc v5:
> - rewrite whole patchset from scratch
> - move arch-dependent code of arch/um and arch/x86/um to tools/um
>   - mainly code under os-Linux/ involved
>   - introduce 2-stage build (kernel, and host-dependent parts)
>   - clean up vmlinux.lds.S
> - put LKL-specific implementations as a SUBARCH under arch/um/nommu
> - introduce !CONFIG_MMU in arch/um
> - use struct arch_thread and arch_switch_to() for subarch-specific
>    thread implementation
> - integrate with the IRQ infrastructure of UML
> - tested with block device drivers (ubd) for the proof
>
> Changes in rfc v4: (https://lwn.net/Articles/816276/)
> - Rebase on the current uml/master branch
> - Fix IRQ handling (bug fix)
> - drop a patch for CONFIG_GENERIC_ATOMIC64 (comment by Peter Zijlstra)
> - implement vector net driver for UMMODE_LIB (comment by Anton)
> - clean up uapi headers to avoid duplicates
> - clean up IRQ handling code (comment by Anton)
> - fix error handling in test code (comments by David Disseldorp)
>
> Changes in rfc v3:
> - use UML drivers (net, block) from LKL programs
> - drop virtio device implementations
> - drop mingw32 (Windows) host
> - drop android (arm/aarch64) host
> - drop FreeBSD (x86_64) host
> - drop LD_PRELOAD (hijack) support
> - update milestone
>
> rfc v2:
> - use UMMODE instead of SUBARCH to switch UML or LKL
> - tools/lkl directory is still there. I confirmed we can move under arch/um
>    (e.g., arch/um/lkl/hosts).  I will move it IF this is preferable.
> - drop several patches involved non-uml directory
> - drop several patches which are not required
> - refine commit logs
> - document updated
>
>
>
>
> LKL (Linux Kernel Library) is aiming to allow reusing the Linux kernel code
> as extensively as possible with minimal effort and reduced maintenance
> overhead.
>
> Examples of how LKL can be used are: creating userspace applications
> (running on Linux and other operating systems) that can read or write Linux
> filesystems or can use the Linux networking stack, creating kernel drivers
> for other operating systems that can read Linux filesystems, bootloaders
> support for reading/writing Linux filesystems, etc.
>
> With LKL, the kernel code is compiled into an object file that can be
> directly linked by applications. The API offered by LKL is based on the
> Linux system call interface.
>
> LKL is originally implemented as an architecture port in arch/lkl, but this
> series of commits tries to integrate this into arch/um as one of the mode
> of UML.  This was discussed during RFC email of LKL (*1).
>
> The latest LKL version can be found at https://github.com/lkl/linux
>
> Milestone
> =========
> This patches is a first step toward upstreaming *library mode* of Linux kernel,
> but we think we need to have several steps toward our goal, describing in the
> below.
>
>
> Milestone 1: LKL lib on top of UML
>   * Kernel - Host build split
>   -  Build UML as a relocatable object using the UML's kernel linker script.
>   -  Move the ptrace and other well isolated os code out of arch/um to
>      tools/um
>   -  Use standard host toolchain to create a static library stripped of
>      the ptrace code. Use standard host toolchain to build the main UML
>      executable.
>   -  Add library init API that creates the UML kernel process and starts
>      UML.
>   * System calls APIs
>   -  Add new system call interface based on UML's irq facility.
>   -  Use the LKL scripts to export the required headers to create system
>      calls APIs that use the UML system calls infrastructure.
>   -  Keep the underlying host and driver operations (threads, irqs, etc.)
>      as they are now in UML.
>   * Boot test
>   -  Port the LKL boot test to verify that we are able to programatically
>      issue system calls.
>
> Milestone 2: add virtio disk support
>   * Export asm/io.h operations to host/os. Create IO access operations
>     and redirect them to weak os_ variants that use the current UML
>     implementation.
>   * Add the LKL IO access layer including generic virtio handling and the
>     virtio block device code.
>   * Port LKL disk test and disk apps (lklfuse, fs2tar, cptofs)
>
> Milestone 3: new arch ports
>    * Abstract the system call / IRQ mode the move the implementation to host
>    * Abstract the thread model and move the implementation to host
>    * Add LKL thread model and LKL ports
>
>
> Building LKL the host library and LKL applications
> ==================================================
>
> % cd tools/um
> % make
>
> will build LKL as a object file, it will install it in tools/um/lib together
> with the headers files in tools/um/include then will build the host library,
> tests and a few of application examples:
>
> * tests/boot - a simple applications that uses LKL and exercises the basic
>    LKL APIs
>
> % make run-tests
>
> should run the above `tests/boot` and `tests/net-test` and report errors if
> there are any.
>
> Supported hosts
> ===============
>
> Currently LKL supports Linux userspace applications. New hosts can be added
> relatively easy if the host supports gcc and GNU ld. Previous versions of
> LKL supported Windows kernel and Haiku kernel hosts, and we also have WIP
> patches with rump-hypercall interface, used in UEFI, as well as macOS
> userspace (part of POSIX).
>
> There is also musl-libc port for LKL, which might be interested in for some
> folks.
>
>
> Further readings about LKL
> =========================
>
> - Discussion in github LKL issue
> https://github.com/lkl/linux/issues/304
>
> - LKL (an article)
> https://www.researchgate.net/profile/Nicolae_Tapus2/publication/224164682_LKL_The_Linux_kernel_library/links/02bfe50fd921ab4f7c000000.pdf
>
> *1 RFC email to LKML (back in 2015)
> https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1012277.html
>
>
> Please review the following changes for suitability for inclusion. If you have
> any objections or suggestions for improvement, please respond to the patches. If
> you agree with the changes, please provide your Acked-by.
>
> The following changes since commit 805c6d3c19210c90c109107d189744e960eae025:
>
>    Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs (2020-09-22 15:08:41 -0700)
>
> are available in the Git repository at:
>
>    git://github.com/thehajime/linux a8686efcbad3c445d3e5bde054c04a58877915f1
>    https://github.com/thehajime/linux/tree/uml-lkl-5.9rc6-v7
>
> Hajime Tazaki (18):
>    um: move arch/um/os-Linux dir to tools/um/uml
>    um: move arch/x86/um/os-Linux to tools/um/uml/
>    scritps: um: suppress warnings if SRCARCH=um
>    um: extend arch_switch_to for alternate SUBARCH
>    um: add nommu mode for UML library mode
>    um: nommu: host interface
>    um: nommu: memory handling
>    um: nommu: kernel thread support
>    um: nommu: system call interface and application API
>    um: nommu: basic console support
>    um: nommu: initialization and cleanup
>    um: nommu: integrate with irq infrastructure of UML
>    um: nommu: plug in the build system
>    um: host: add nommu build for ARCH=um
>    um: host: add utilities functions
>    um: host: posix host operations
>    um: host: add test programs
>    um: nommu: add block device support of UML
>
> Octavian Purdila (3):
>    um: split build in kernel and host parts
>    um: add os init and exit calls
>    um: host: implement os_initcalls and os_exitcalls
>
>   arch/um/Kconfig                               |  29 +-
>   arch/um/Makefile                              |  35 +-
>   arch/um/drivers/Makefile                      |  10 +-
>   .../um/{os-Linux => }/drivers/ethertap_kern.c |   0
>   arch/um/{os-Linux => }/drivers/tuntap_kern.c  |   0
>   arch/um/include/asm/common.lds.S              |  99 ----
>   arch/um/include/asm/host_ops.h                |   9 +
>   arch/um/include/asm/mmu.h                     |   3 +
>   arch/um/include/asm/mmu_context.h             |   8 +
>   arch/um/include/asm/page.h                    |  15 +
>   arch/um/include/asm/pgtable.h                 |  27 +
>   arch/um/include/asm/thread_info.h             |  24 +
>   arch/um/include/asm/uaccess.h                 |   6 +
>   arch/um/include/asm/xor.h                     |   3 +-
>   arch/um/include/shared/as-layout.h            |   1 +
>   .../drivers => include/shared}/etap.h         |   0
>   arch/um/include/shared/init.h                 |  19 +-
>   arch/um/include/shared/os.h                   |   1 +
>   .../drivers => include/shared}/tuntap.h       |   0
>   arch/um/include/uapi/asm/Kbuild               |   2 +
>   arch/um/kernel/Makefile                       |  13 +-
>   arch/um/kernel/dyn.lds.S                      | 171 -------
>   arch/um/kernel/irq.c                          |  13 +
>   arch/um/kernel/process.c                      |  14 +-
>   arch/um/kernel/reboot.c                       |   5 +
>   arch/um/kernel/time.c                         |   2 +
>   arch/um/kernel/um_arch.c                      |  16 +
>   arch/um/kernel/uml.lds.S                      | 115 -----
>   arch/um/{os-Linux => kernel}/user_syms.c      |   0
>   arch/um/kernel/vmlinux.lds.S                  |  91 +++-
>   arch/um/nommu/Makefile                        |   1 +
>   arch/um/nommu/Makefile.um                     |  22 +
>   arch/um/nommu/include/asm/Kbuild              |   6 +
>   arch/um/nommu/include/asm/archparam.h         |   1 +
>   arch/um/nommu/include/asm/atomic.h            |  11 +
>   arch/um/nommu/include/asm/atomic64.h          | 114 +++++
>   arch/um/nommu/include/asm/bitsperlong.h       |  12 +
>   arch/um/nommu/include/asm/byteorder.h         |   7 +
>   arch/um/nommu/include/asm/cpu.h               |  16 +
>   arch/um/nommu/include/asm/elf.h               |  15 +
>   arch/um/nommu/include/asm/mm_context.h        |   8 +
>   arch/um/nommu/include/asm/processor.h         |  46 ++
>   arch/um/nommu/include/asm/ptrace.h            |  21 +
>   arch/um/nommu/include/asm/sched.h             |  23 +
>   arch/um/nommu/include/asm/segment.h           |   9 +
>   arch/um/nommu/include/asm/syscall_wrapper.h   |  57 +++
>   arch/um/nommu/include/asm/syscalls.h          |  15 +
>   arch/um/nommu/include/uapi/asm/Kbuild         |   6 +
>   arch/um/nommu/include/uapi/asm/bitsperlong.h  |  11 +
>   arch/um/nommu/include/uapi/asm/byteorder.h    |  11 +
>   arch/um/nommu/include/uapi/asm/host_ops.h     | 122 +++++
>   arch/um/nommu/include/uapi/asm/sigcontext.h   |  12 +
>   arch/um/nommu/include/uapi/asm/syscalls.h     | 287 +++++++++++
>   arch/um/nommu/include/uapi/asm/unistd.h       |  17 +
>   arch/um/nommu/um/Kconfig                      |  45 ++
>   arch/um/nommu/um/Makefile                     |   4 +
>   arch/um/nommu/um/bootmem.c                    |  87 ++++
>   arch/um/nommu/um/console.c                    |  42 ++
>   arch/um/nommu/um/cpu.c                        | 247 ++++++++++
>   arch/um/nommu/um/delay.c                      |  31 ++
>   arch/um/nommu/um/setup.c                      | 179 +++++++
>   arch/um/nommu/um/shared/sysdep/archsetjmp.h   |  13 +
>   arch/um/nommu/um/shared/sysdep/faultinfo.h    |   8 +
>   .../nommu/um/shared/sysdep/kernel-offsets.h   |  12 +
>   arch/um/nommu/um/shared/sysdep/mcontext.h     |   9 +
>   arch/um/nommu/um/shared/sysdep/ptrace.h       |  42 ++
>   arch/um/nommu/um/shared/sysdep/ptrace_user.h  |   7 +
>   arch/um/nommu/um/syscalls.c                   | 199 ++++++++
>   arch/um/nommu/um/threads.c                    | 262 ++++++++++
>   arch/um/nommu/um/unimplemented.c              |  70 +++
>   arch/um/nommu/um/user_constants.h             |  13 +
>   arch/um/os-Linux/Makefile                     |  19 -
>   arch/um/os-Linux/drivers/Makefile             |  13 -
>   arch/um/scripts/headers_install.py            | 197 ++++++++
>   arch/x86/um/Makefile                          |   2 +-
>   arch/x86/um/os-Linux/Makefile                 |  13 -
>   arch/x86/um/ptrace_32.c                       |   2 +-
>   arch/x86/um/syscalls_64.c                     |   2 +-
>   scripts/headers_install.sh                    |   4 +
>   scripts/link-vmlinux.sh                       |  42 +-
>   tools/um/.gitignore                           |   1 +
>   tools/um/Makefile                             |  81 +++
>   tools/um/Targets                              |  13 +
>   tools/um/include/lkl.h                        | 357 ++++++++++++++
>   tools/um/include/lkl_host.h                   |  27 +
>   tools/um/lib/Build                            |   7 +
>   tools/um/lib/fs.c                             | 461 ++++++++++++++++++
>   tools/um/lib/jmp_buf.c                        |  14 +
>   tools/um/lib/jmp_buf.h                        |   8 +
>   tools/um/lib/posix-host.c                     | 293 +++++++++++
>   tools/um/lib/utils.c                          | 213 ++++++++
>   tools/um/tests/Build                          |   4 +
>   tools/um/tests/boot.c                         | 393 +++++++++++++++
>   tools/um/tests/boot.sh                        |   9 +
>   tools/um/tests/cla.c                          | 159 ++++++
>   tools/um/tests/cla.h                          |  33 ++
>   tools/um/tests/disk.c                         | 168 +++++++
>   tools/um/tests/disk.sh                        |  70 +++
>   tools/um/tests/run.py                         | 174 +++++++
>   tools/um/tests/tap13.py                       | 209 ++++++++
>   tools/um/tests/test.c                         | 126 +++++
>   tools/um/tests/test.h                         |  72 +++
>   tools/um/tests/test.sh                        | 181 +++++++
>   tools/um/uml/Build                            |  58 +++
>   tools/um/uml/drivers/Build                    |  10 +
>   .../um/uml}/drivers/ethertap_user.c           |   0
>   .../um/uml}/drivers/tuntap_user.c             |   0
>   {arch/um/os-Linux => tools/um/uml}/elf_aux.c  |   0
>   {arch/um/os-Linux => tools/um/uml}/execvp.c   |   4 -
>   {arch/um/os-Linux => tools/um/uml}/file.c     |   0
>   {arch/um/os-Linux => tools/um/uml}/helper.c   |   0
>   {arch/um/os-Linux => tools/um/uml}/irq.c      |   0
>   {arch/um/os-Linux => tools/um/uml}/main.c     |   0
>   {arch/um/os-Linux => tools/um/uml}/mem.c      |   0
>   tools/um/uml/nommu/Build                      |   1 +
>   tools/um/uml/nommu/registers.c                |  21 +
>   tools/um/uml/nommu/unimplemented.c            |  21 +
>   {arch/um/os-Linux => tools/um/uml}/process.c  |   2 +
>   .../um/os-Linux => tools/um/uml}/registers.c  |   0
>   {arch/um/os-Linux => tools/um/uml}/sigio.c    |   0
>   {arch/um/os-Linux => tools/um/uml}/signal.c   |  12 +-
>   .../skas/Makefile => tools/um/uml/skas/Build  |   6 +-
>   {arch/um/os-Linux => tools/um/uml}/skas/mem.c |   0
>   .../os-Linux => tools/um/uml}/skas/process.c  |   3 +-
>   {arch/um/os-Linux => tools/um/uml}/start_up.c |   0
>   {arch/um/os-Linux => tools/um/uml}/time.c     |   0
>   {arch/um/os-Linux => tools/um/uml}/tty.c      |   0
>   {arch/um/os-Linux => tools/um/uml}/umid.c     |   0
>   {arch/um/os-Linux => tools/um/uml}/util.c     |  26 +
>   tools/um/uml/x86/Build                        |  11 +
>   .../os-Linux => tools/um/uml/x86}/mcontext.c  |   0
>   .../um/os-Linux => tools/um/uml/x86}/prctl.c  |   0
>   .../os-Linux => tools/um/uml/x86}/registers.c |   0
>   .../os-Linux => tools/um/uml/x86}/task_size.c |   0
>   .../um/os-Linux => tools/um/uml/x86}/tls.c    |   0
>   135 files changed, 5870 insertions(+), 523 deletions(-)
>   rename arch/um/{os-Linux => }/drivers/ethertap_kern.c (100%)
>   rename arch/um/{os-Linux => }/drivers/tuntap_kern.c (100%)
>   delete mode 100644 arch/um/include/asm/common.lds.S
>   create mode 100644 arch/um/include/asm/host_ops.h
>   rename arch/um/{os-Linux/drivers => include/shared}/etap.h (100%)
>   rename arch/um/{os-Linux/drivers => include/shared}/tuntap.h (100%)
>   create mode 100644 arch/um/include/uapi/asm/Kbuild
>   delete mode 100644 arch/um/kernel/dyn.lds.S
>   delete mode 100644 arch/um/kernel/uml.lds.S
>   rename arch/um/{os-Linux => kernel}/user_syms.c (100%)
>   create mode 100644 arch/um/nommu/Makefile
>   create mode 100644 arch/um/nommu/Makefile.um
>   create mode 100644 arch/um/nommu/include/asm/Kbuild
>   create mode 100644 arch/um/nommu/include/asm/archparam.h
>   create mode 100644 arch/um/nommu/include/asm/atomic.h
>   create mode 100644 arch/um/nommu/include/asm/atomic64.h
>   create mode 100644 arch/um/nommu/include/asm/bitsperlong.h
>   create mode 100644 arch/um/nommu/include/asm/byteorder.h
>   create mode 100644 arch/um/nommu/include/asm/cpu.h
>   create mode 100644 arch/um/nommu/include/asm/elf.h
>   create mode 100644 arch/um/nommu/include/asm/mm_context.h
>   create mode 100644 arch/um/nommu/include/asm/processor.h
>   create mode 100644 arch/um/nommu/include/asm/ptrace.h
>   create mode 100644 arch/um/nommu/include/asm/sched.h
>   create mode 100644 arch/um/nommu/include/asm/segment.h
>   create mode 100644 arch/um/nommu/include/asm/syscall_wrapper.h
>   create mode 100644 arch/um/nommu/include/asm/syscalls.h
>   create mode 100644 arch/um/nommu/include/uapi/asm/Kbuild
>   create mode 100644 arch/um/nommu/include/uapi/asm/bitsperlong.h
>   create mode 100644 arch/um/nommu/include/uapi/asm/byteorder.h
>   create mode 100644 arch/um/nommu/include/uapi/asm/host_ops.h
>   create mode 100644 arch/um/nommu/include/uapi/asm/sigcontext.h
>   create mode 100644 arch/um/nommu/include/uapi/asm/syscalls.h
>   create mode 100644 arch/um/nommu/include/uapi/asm/unistd.h
>   create mode 100644 arch/um/nommu/um/Kconfig
>   create mode 100644 arch/um/nommu/um/Makefile
>   create mode 100644 arch/um/nommu/um/bootmem.c
>   create mode 100644 arch/um/nommu/um/console.c
>   create mode 100644 arch/um/nommu/um/cpu.c
>   create mode 100644 arch/um/nommu/um/delay.c
>   create mode 100644 arch/um/nommu/um/setup.c
>   create mode 100644 arch/um/nommu/um/shared/sysdep/archsetjmp.h
>   create mode 100644 arch/um/nommu/um/shared/sysdep/faultinfo.h
>   create mode 100644 arch/um/nommu/um/shared/sysdep/kernel-offsets.h
>   create mode 100644 arch/um/nommu/um/shared/sysdep/mcontext.h
>   create mode 100644 arch/um/nommu/um/shared/sysdep/ptrace.h
>   create mode 100644 arch/um/nommu/um/shared/sysdep/ptrace_user.h
>   create mode 100644 arch/um/nommu/um/syscalls.c
>   create mode 100644 arch/um/nommu/um/threads.c
>   create mode 100644 arch/um/nommu/um/unimplemented.c
>   create mode 100644 arch/um/nommu/um/user_constants.h
>   delete mode 100644 arch/um/os-Linux/Makefile
>   delete mode 100644 arch/um/os-Linux/drivers/Makefile
>   create mode 100755 arch/um/scripts/headers_install.py
>   delete mode 100644 arch/x86/um/os-Linux/Makefile
>   create mode 100644 tools/um/.gitignore
>   create mode 100644 tools/um/Makefile
>   create mode 100644 tools/um/Targets
>   create mode 100644 tools/um/include/lkl.h
>   create mode 100644 tools/um/include/lkl_host.h
>   create mode 100644 tools/um/lib/Build
>   create mode 100644 tools/um/lib/fs.c
>   create mode 100644 tools/um/lib/jmp_buf.c
>   create mode 100644 tools/um/lib/jmp_buf.h
>   create mode 100644 tools/um/lib/posix-host.c
>   create mode 100644 tools/um/lib/utils.c
>   create mode 100644 tools/um/tests/Build
>   create mode 100644 tools/um/tests/boot.c
>   create mode 100755 tools/um/tests/boot.sh
>   create mode 100644 tools/um/tests/cla.c
>   create mode 100644 tools/um/tests/cla.h
>   create mode 100644 tools/um/tests/disk.c
>   create mode 100755 tools/um/tests/disk.sh
>   create mode 100755 tools/um/tests/run.py
>   create mode 100644 tools/um/tests/tap13.py
>   create mode 100644 tools/um/tests/test.c
>   create mode 100644 tools/um/tests/test.h
>   create mode 100644 tools/um/tests/test.sh
>   create mode 100644 tools/um/uml/Build
>   create mode 100644 tools/um/uml/drivers/Build
>   rename {arch/um/os-Linux => tools/um/uml}/drivers/ethertap_user.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/drivers/tuntap_user.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/elf_aux.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/execvp.c (98%)
>   rename {arch/um/os-Linux => tools/um/uml}/file.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/helper.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/irq.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/main.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/mem.c (100%)
>   create mode 100644 tools/um/uml/nommu/Build
>   create mode 100644 tools/um/uml/nommu/registers.c
>   create mode 100644 tools/um/uml/nommu/unimplemented.c
>   rename {arch/um/os-Linux => tools/um/uml}/process.c (99%)
>   rename {arch/um/os-Linux => tools/um/uml}/registers.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/sigio.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/signal.c (96%)
>   rename arch/um/os-Linux/skas/Makefile => tools/um/uml/skas/Build (56%)
>   rename {arch/um/os-Linux => tools/um/uml}/skas/mem.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/skas/process.c (99%)
>   rename {arch/um/os-Linux => tools/um/uml}/start_up.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/time.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/tty.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/umid.c (100%)
>   rename {arch/um/os-Linux => tools/um/uml}/util.c (89%)
>   create mode 100644 tools/um/uml/x86/Build
>   rename {arch/x86/um/os-Linux => tools/um/uml/x86}/mcontext.c (100%)
>   rename {arch/x86/um/os-Linux => tools/um/uml/x86}/prctl.c (100%)
>   rename {arch/x86/um/os-Linux => tools/um/uml/x86}/registers.c (100%)
>   rename {arch/x86/um/os-Linux => tools/um/uml/x86}/task_size.c (100%)
>   rename {arch/x86/um/os-Linux => tools/um/uml/x86}/tls.c (100%)
>
-- 
Anton R. Ivanov
Cambridgegreys Limited. Registered in England. Company Number 10273661
https://www.cambridgegreys.com/




More information about the linux-um mailing list