mirror of
https://github.com/clearlinux/graphene.git
synced 2026-04-28 19:23:39 +00:00
Change log (most important only):
- unify CPU context structures - now we have only one version -
`PAL_CONTEXT` - which is shared between LibOS and PALs and it should
depend only on the host architecture (not OS),
- syscalls emulation changed:
- dedicated LibOS stack is now used for syscalls emulation,
- removed one indirection level in syscalls table - now it stores
`shim_do_*` functions directly,
- signal handling - completely rewritten:
- all signal queues use proper locking schemes now,
- signals are handled *only* when returning to the user app from LibOS
or PAL,
- nested signals are now possible,
- the app is allowed to jump out of signal handler with the same
sematics as on normal Linux,
- signal altstack is now fully supported,
- syscall restarting is now supported,
- doing a backtrace from the signal handler works properly,
- disallow injecting host-level signals, with one exception, see
`sys.enable_sigterm_injection` manifest option for more details.
R example
This directory contains an example for running R in Graphene, including the Makefile and a template for generating the manifest. The application was tested on Ubuntu 16.04, with both normal Linux and SGX platforms.
Generating the manifest
Building for Linux
Run make (non-debug) or make DEBUG=1 (debug) in the directory.
Building for SGX
Run make SGX=1 (non-debug) or make SGX=1 DEBUG=1 (debug) in the directory.
Building with a local R installation
By default, the make command creates the manifest for the system R binary
(/usr/lib/R/bin/exec/R). If you have a local R installation, you may create
the manifest with the R_HOME variable set accordingly. For example:
make R_HOME=<install path>/lib/R SGX=1
Run R with Graphene
When running R with Graphene, please use the --vanilla or --no-save option.
Here's an example of running an R script under Graphene:
Without SGX:
./pal_loader ./R --slave --vanilla -f scripts/sample.r
./pal_loader ./R --slave --vanilla -f scripts/R-benchmark-25.R
With SGX:
SGX=1 ./pal_loader ./R --slave --vanilla -f scripts/sample.r
SGX=1 ./pal_loader ./R --slave --vanilla -f scripts/R-benchmark-25.R