Copyright 2020 The Monogon Project Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


From 99f3ba25f42ee1ec31bcbb27c4813f4589d6fd89 Mon Sep 17 00:00:00 2001
From: Lorenz Brun <lorenz@nexantic.com>
Date: Tue, 9 Mar 2021 13:42:50 +0100
Subject: [PATCH] include compat.h

---
 src/include/liburing/compat.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 src/include/liburing/compat.h

diff --git a/src/include/liburing/compat.h b/src/include/liburing/compat.h
new file mode 100644
index 0000000..2e46c5f
--- /dev/null
+++ b/src/include/liburing/compat.h
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: MIT */
+#ifndef LIBURING_COMPAT_H
+#define LIBURING_COMPAT_H
+
+#include <linux/time_types.h>
+
+#include <inttypes.h>
+
+struct open_how {
+	uint64_t	flags;
+	uint64_t	mode;
+	uint64_t	resolve;
+};
+
+#endif
-- 
2.25.1

