start threaded schedualer

threaded
Avril 3 years ago
parent eaf85832a3
commit a75654d7d2
Signed by: flanchan
GPG Key ID: 284488987C31F630

@ -0,0 +1,36 @@
#ifndef _INTS_H
#define _INTS_H
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
#define DEF(s, n) typedef s ## int ## n ## _t s ## n
#define DEFINT(n) typedef uint ## n ## _t u ## n; \
typedef int ## n ## _t i ## n
DEFINT(8);
DEFINT(16);
DEFINT(32);
DEFINT(64);
#ifdef __cplusplus
#else
#include <bool.h>
typedef signed __int128 i128;
typedef unsigned __int128 u128;
#endif
typedef float f32;
typedef double f64;
typedef size_t usize;
typedef ssize_t isize;
typedef bool u1;
typedef bool i1;
#undef DEFINT
#undef DEF
#endif /* _INTS_H */

@ -0,0 +1,23 @@
#pragma once
#include <ints.h>
#include <utility>
#include <memory>
/// Superclass of all `MASK` writing task classes
struct Task {
Task();
Task(const Task&) = delete;
Task(Task&&);
virtual ~Task();
private:
struct _impl;
protected:
const std::unique_ptr<_impl> inner;
};
// Create a `Task` subtype for writing the bits in `MASK` to `output_slice`, create an instance of that type. Then return it as a `Task`.
template<u8 MASK>
std::unique_ptr<Task> writing_task_for(u8* output_slice, ... TODO

@ -0,0 +1,9 @@
#include <sched.hpp>
struct Task::_impl {
};
Task::Task() : inner(std::make_unique<_impl>()){}
Task::Task(Task&& mv) : inner(std::move(*const_cast<std::unique_ptr<_impl>*>(&mv.inner))){}
Task::~Task() = default;
Loading…
Cancel
Save