From a75654d7d240cf608fcf71abe77bd6693b26a41e Mon Sep 17 00:00:00 2001 From: Avril Date: Thu, 3 Jun 2021 22:01:46 +0100 Subject: [PATCH] start threaded schedualer --- include/ints.h | 36 ++++++++++++++++++++++++++++++++++++ include/sched.hpp | 23 +++++++++++++++++++++++ src/sched.cpp | 9 +++++++++ 3 files changed, 68 insertions(+) create mode 100644 include/ints.h create mode 100644 include/sched.hpp create mode 100644 src/sched.cpp diff --git a/include/ints.h b/include/ints.h new file mode 100644 index 0000000..0748cab --- /dev/null +++ b/include/ints.h @@ -0,0 +1,36 @@ +#ifndef _INTS_H +#define _INTS_H + +#include +#include +#include + + +#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 +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 */ diff --git a/include/sched.hpp b/include/sched.hpp new file mode 100644 index 0000000..483d42e --- /dev/null +++ b/include/sched.hpp @@ -0,0 +1,23 @@ +#pragma once +#include + +#include +#include + +/// 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 +std::unique_ptr writing_task_for(u8* output_slice, ... TODO diff --git a/src/sched.cpp b/src/sched.cpp new file mode 100644 index 0000000..3a77c69 --- /dev/null +++ b/src/sched.cpp @@ -0,0 +1,9 @@ +#include + +struct Task::_impl { + +}; + +Task::Task() : inner(std::make_unique<_impl>()){} +Task::Task(Task&& mv) : inner(std::move(*const_cast*>(&mv.inner))){} +Task::~Task() = default;