Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43997540 authored by terryguan's avatar terryguan
Browse files

init: add a swapoff built-in command

Enables a method for swapping off certain block devices or files. This
will be used before hibernation occurs.

Bug: 339688542
Test: Manual, verified that calling swapoff from a init file swapsoff
location that is specified

Change-Id: I212a6f303a023c3e440b557caae82ad3904ac9c9
parent d96c6b8e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -745,6 +745,9 @@ provides the `aidl_lazy_test_1` interface.
  fstab.${ro.hardware} or fstab.${ro.hardware.platform} will be scanned for
  under /odm/etc, /vendor/etc, or / at runtime, in that order.

`swapoff <path>`
> Stops swapping to the file or block device specified by path.

`symlink <target> <path>`
> Create a symbolic link at _path_ with the value _target_

@@ -788,7 +791,6 @@ provides the `aidl_lazy_test_1` interface.
  If the file does not exist, it will be created. If it does exist,
  it will be truncated. Properties are expanded within _content_.


Imports
-------
`import <path>`
+9 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <sys/resource.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/swap.h>
#include <sys/syscall.h>
#include <sys/system_properties.h>
#include <sys/time.h>
@@ -1316,6 +1317,13 @@ static Result<void> do_enter_default_mount_ns(const BuiltinArguments& args) {
    return {};
}

static Result<void> do_swapoff(const BuiltinArguments& args) {
    if (!swapoff(args[1].c_str())) {
        return ErrnoError() << "swapoff() failed";
    }
    return {};
}

// Builtin-function-map start
const BuiltinFunctionMap& GetBuiltinFunctionMap() {
    constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max();
@@ -1372,6 +1380,7 @@ const BuiltinFunctionMap& GetBuiltinFunctionMap() {
        {"start",                   {1,     1,    {false,  do_start}}},
        {"stop",                    {1,     1,    {false,  do_stop}}},
        {"swapon_all",              {0,     1,    {false,  do_swapon_all}}},
        {"swapoff",                 {1,     1,    {false,  do_swapoff}}},
        {"enter_default_mount_ns",  {0,     0,    {false,  do_enter_default_mount_ns}}},
        {"symlink",                 {2,     2,    {true,   do_symlink}}},
        {"sysclktz",                {1,     1,    {false,  do_sysclktz}}},