sandboxed-api/sandboxed_api/sandbox2/syscall_defs.h
Christian Blichmann dbaf95c724 Move utility code into sandboxed_api/util
This change should make it less confusing where utility code comes from.
Having it in two places made sense when we were debating whether to publish
Sandbox2 separately, but not any longer.

Follow-up changes will move `sandbox2/util.h` and rename the remaining
`sandbox2/util` folder.

PiperOrigin-RevId: 351601640
Change-Id: I6256845261f610e590c25e2c59851cc51da2d778
2021-01-13 09:25:52 -08:00

46 lines
1.0 KiB
C++

#ifndef SANDBOXED_API_SANDBOX2_SYSCALL_DEFS_H_
#define SANDBOXED_API_SANDBOX2_SYSCALL_DEFS_H_
#include <sys/types.h>
#include <cstdint>
#include <string>
#include <vector>
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
#include "sandboxed_api/config.h"
#include "sandboxed_api/sandbox2/syscall.h"
namespace sandbox2 {
namespace syscalls {
constexpr int kMaxArgs = 6;
} // namespace syscalls
class SyscallTable {
public:
struct Entry;
// Returns the syscall table for the architecture.
static SyscallTable get(sapi::cpu::Architecture arch);
int size() { return data_.size(); }
absl::string_view GetName(int syscall) const;
std::vector<std::string> GetArgumentsDescription(
int syscall, const uint64_t values[syscalls::kMaxArgs], pid_t pid) const;
private:
constexpr SyscallTable() = default;
explicit constexpr SyscallTable(absl::Span<const Entry> data) : data_(data) {}
const absl::Span<const Entry> data_;
};
} // namespace sandbox2
#endif // SANDBOXED_API_SANDBOX2_SYSCALL_DEFS_H_