lib/ukdebug: Fix overrun in outf for OUTDEV_BUFFER
This patch fixes two bugs: 1) The return value of vsnprintf does not include the null-terminator. Subtracting one is thus not necessary. 2) In case the buffer is too small, vsnprintf returns the number of characters that would have been written if the buffer had enough space. The return value must therefore be tested against the remaining buffer space. Signed-off-by: Marc Rittinghaus <[email protected]> Reviewed-by: Vlad-Andrei Badoiu <[email protected]> Tested-by: Unikraft CI <[email protected]> GitHub-Pull-Request: #232
|1 month ago|
|.github||6 days ago|
|arch||5 months ago|
|doc||1 week ago|
|include/uk||3 months ago|
|lib||3 days ago|
|plat||6 days ago|
|support||4 days ago|
|.checkpatch.conf||3 years ago|
|.clang-format||3 years ago|
|.gitignore||6 days ago|
|CODING_STYLE.md||3 years ago|
|CONTRIBUTING.md||3 years ago|
|COPYING.md||3 years ago|
|Config.uk||1 year ago|
|Makefile||3 weeks ago|
|Makefile.uk||5 months ago|
|README.md||2 months ago|
|version.mk||5 months ago|
Unleash the Power of Unikernels!
Unikraft is an automated system for building specialized POSIX-compliant OSes known as unikernels; these images are tailored to the needs of specific applications. Unikraft is based around the concept of small, modular libraries, each providing a part of the functionality commonly found in an operating system (e.g., memory allocation, scheduling, filesystem support, network stack, etc.).
Unikraft supports multiple target platforms (e.g., Xen, KVM, and Linux userspace) so that it is possible to build multiple images, one for each platform, for a single application without requiring the application developer to do any additional, platform-specific work. In all, Unikraft is able to build specialized OSes and unikernels targeted at specific applications without requiring the time-consuming, expert work that is required today to build such images.
Unikraft is a new system for ultra-light virtualization of your services in the cloud or at the edge, as well as extremely efficient software stacks to run bare metal on embedded devices. Smaller, quicker, and way more efficient than conventional systems:
⚡ Cold boot virtual machines in a fraction of a second While Linux-based systems might take tens of seconds to boot, Unikraft will be up in a blink.
📈 Deploy significantly more instances per physical machine Don’t waste CPU cycles on unneeded functionality – focus on your users’ needs.
📉 Drastic reductions in memory consumption With all your applications and data strongly separated into ultra light-weight virtual machines, scaling becomes a breeze.
🛡️ Ready for mission critical deployments Focus your trust on a minimal set of required components, significantly reduce your service’s attack surface, and minimize certification costs.
🏎 Outstanding performance Specializing the OS to meet your application’s needs is the key to achieving superior performance, making you ready to drive your infrastructure to the peak.
Unikraft supports the construction of multiple architectures, platforms, and images. The following tables give an overview of the current support.
|RISC-V||⚙️ Issue #60|
|Xen Hypervisor||✅||⚙️ Issue #34||⚙️ Issue #62|
|Solo5||✅||❌||⚙️ Issue #63|
|VMWare||⚙️ Issue #3||-||-|
|Hyper-V||⚙️ Issue #61||-||-|
|Amazon Web Services||AMI, Firecracker|
|Google Compute Platform||GCP Image|
The fastest way to get started configuring, building and deploying Unikraft unikernels is to use our companion tool, kraft.
With kraft installed, you can download Unikraft components, configure your unikernel to your needs, build it and run it -- there’s no need to be an expert!
Contributions are welcome! Please see our Contributing Guide for more details. A good starting point is the list of open projects. If one of these interests you or you are interested in finding out more information, please drop us a line via the mailing list or directly at [email protected].
Unikraft is licensed under a BSD-3-Clause. For more information, please refer to