AsmGrader 0.0.0
Loading...
Searching...
No Matches
linux.hpp File Reference
#include <asmgrader/common/expected.hpp>
#include <asmgrader/common/extra_formatters.hpp>
#include <asmgrader/logging.hpp>
#include <fmt/format.h>
#include <fmt/ostream.h>
#include <libassert/assert.hpp>
#include <range/v3/algorithm/transform.hpp>
#include <cerrno>
#include <csignal>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <optional>
#include <string>
#include <system_error>
#include <vector>
#include <bits/types/siginfo_t.h>
#include <fcntl.h>
#include <sched.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/ptrace.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
Include dependency graph for linux.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  asmgrader::linux::Fork
 
struct  asmgrader::linux::Pipe
 
class  asmgrader::linux::Signal
 Value type to behave as a linux signal. More...
 

Namespaces

namespace  asmgrader
 
namespace  asmgrader::linux
 

Typedefs

using asmgrader::linux::SignalHandlerT = void (*)(int)
 

Functions

std::error_code asmgrader::linux::make_error_code (int err=errno)
 
Expected< ssize_t > asmgrader::linux::write (int fd, const std::string &data)
 writes to a file descriptor. See write(2) returns success/failure; logs failure at debug level
 
Expected< std::string > asmgrader::linux::read (int fd, size_t count)
 reads fromm a file descriptor. See read(2) returns success/failure; logs failure at debug level
 
Expected asmgrader::linux::close (int fd)
 closes a file descriptor. See close(2) returns success/failure; logs failure at debug level
 
Expected asmgrader::linux::kill (pid_t pid, int sig)
 see kill(2) returns success/failure; logs failure at debug level
 
Expected asmgrader::linux::execve (const std::string &exec, const std::vector< std::string > &args, const std::vector< std::string > &envp)
 args and envp do NOT need to have an extra NULL element; this is added for you. see execve(2) returns success/failure; logs failure at debug level
 
Expected< Forkasmgrader::linux::fork ()
 see dup(2) and ForkExpected returns result from enum; logs failure at debug level
 
Expected< int > asmgrader::linux::open (const std::string &pathname, int flags, mode_t mode=0)
 see open(2) returns success/failure; logs failure at debug level
 
Expected< off_t > asmgrader::linux::lseek (int fd, off_t offset, int whence)
 see lseek(2) returns success/failure; logs failure at debug level
 
Expected asmgrader::linux::dup2 (int oldfd, int newfd)
 see dup(2) returns success/failure; logs failure at debug level
 
Expected< int > asmgrader::linux::ioctl (int fd, unsigned long request, void *argp)
 see ioctl(2) returns success/failure; logs failure at debug level
 
Expected< int > asmgrader::linux::fcntl (int fd, int cmd, std::optional< int > arg=std::nullopt)
 see fcntl(2) returns success/failure; logs failure at debug level
 
Expected< siginfo_t > asmgrader::linux::waitid (idtype_t idtype, id_t id, int options=WSTOPPED|WEXITED)
 see waitid(2) returns success/failure; logs failure at debug level
 
Expected asmgrader::linux::raise (int sig)
 see raise(3) returns success/failure; logs failure at debug level
 
Expected< Pipeasmgrader::linux::pipe2 (int flags=0)
 see pipe2(2) returns success/failure; logs failure at debug level
 
Expected< long > asmgrader::linux::ptrace (int request, pid_t pid=0, AddrT addr=NULL, DataT data=NULL)
 see ptrace(2) returns success/failure; logs failure at debug level
 
Expected< struct ::stat > asmgrader::linux::stat (const std::string &pathname)
 see stat(2)
 
Expected< pid_t > asmgrader::linux::getpid ()
 see getpid(2) and getppid(2) these functions "cannot fail" according to the manpage. These wrappers are provided just for consistency.
 
Expected< pid_t > asmgrader::linux::getppid ()
 
Expected< SignalHandlerTasmgrader::linux::signal (Signal sig, SignalHandlerT handler)