Wrapping System Calls in Glibc

Wrapping System Calls in Glibc

Wrapping System Calls in Glibc Maciej W. Rozycki <[email protected]> Senior Technologist, R&D Engineering Sep 10th, 2019 © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 Message and Request for Feedback • Message from Florian Weimer – On behalf of the GNU C Library project • The messengers – Dmitry V. Levin – Myself • GNU Tools Cauldron 2019 – Montréal, Canada, Sep 12-15, 2019 – The GNU C Library BoF © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 2 Motivation • Type checking • Portability across Linux ports • POSIX thread cancellation • Debugging © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 3 Overview • Intent is to have syscall wrappers in glibc – That are useful for general application use – Guidelines: https://sourceware.org/glibc/wiki/Consensus#WIP:_Kernel_syscalls_wrappers • However missing ones may only be gradually added • Syscall wrappers need documentation in the manual – Copyright assignment required with FSF • The glibc project suffering from shortage of reviewers © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 4 Specific Notes • No userspace syscall emulation, ENOSYS • Architecture-independent wrapper names • Multiplexing syscalls problematic – Type checking not possible when argument types vary – Variadic calls even more problematic • E.g. open(2)/openat(2) would not pass the mode argument with the newly-added O_TMPFILE flag • Cannot be called with a non-variadic function prototype on some architectures – Separate wrappers e.g. for individual futex(2) requests • New syscalls added across all architectures in one kernel release © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 5 Interfaces • Use ssize_t or size_t type respectively for buffer sizes in the wrapper – Even if the kernel uses int or unsigned int • Avoid long type for flags • Using off64_t * type for file offsets is fine – Plain off64_t is problematic • Errors via errno and special return value – Except for pthread_* • Types and constants in a separate header for each syscall © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 6 Q&A © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 7 About the Messengers • Dmitry V. Levin – The co-founder and the chief software architect of BaseALT – Contributor to the GNU C Library since 2001 – A long time contributor to various free software projects, including strace, Linux kernel, Linux-PAM, and many others • Myself – 20+ year supporter of free software movement – Contributor and reviewer for: Linux, GCC, glibc, binutils, GDB – x86 APIC, MIPS architecture, FDDI networking – Enthusiast of (running Linux on) DEC hardware: VAX, MIPS, Alpha – Now helping Western Digital with RISC-V effort © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019 8 © 2019 Western Digital Corporation or its affiliates. All rights reserved. 09/09/2019.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    9 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us