diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..c6afb6cc
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,69 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Launch QEMU & debug the kernel",
+ "type": "cppdbg",
+ "request": "launch",
+ "program": "${workspaceFolder}/../Kernel/fennix.elf",
+ "cwd": "${workspaceFolder}",
+ "args": [],
+ "targetArchitecture": "x64",
+ "MIMode": "gdb",
+ "miDebuggerServerAddress": "/tmp/gdb-fennix",
+ "miDebuggerPath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gdb",
+ "miDebuggerArgs": "",
+ "externalConsole": false,
+ "additionalSOLibSearchPath": "${workspaceFolder}",
+ "internalConsoleOptions": "neverOpen",
+ "customLaunchSetupCommands": [
+ // {
+ // "text": "target remote localhost:1234",
+ // "description": "Connect to QEMU remote debugger"
+ // }
+ ],
+ "setupCommands": [
+ {
+ "description": "Enable pretty-printing for gdb",
+ "text": "-enable-pretty-printing",
+ "ignoreFailures": true
+ },
+ {
+ "text": "set breakpoint pending on",
+ "description": "Make breakpoint pending on future shared library load."
+ },
+ {
+ "text": "file ${workspaceFolder}/../Kernel/fennix.elf",
+ "description": "Load binary"
+ },
+ {
+ "text": "add-symbol-file ${workspaceFolder}/../initrd_tmp_data/bin/utest",
+ "description": "Load /bin/utest",
+ "ignoreFailures": true
+ },
+ {
+ "text": "source ${workspaceFolder}/../tools/.gdbinit"
+ }
+ ],
+ "preLaunchTask": "launch-qemu"
+ },
+ {
+ "type": "gdb",
+ "request": "attach",
+ "name": "Launch QEMU & attach to gdbserver",
+ "executable": "${workspaceFolder}/../Kernel/fennix.elf",
+ "target": "/tmp/gdb-fennix",
+ "remote": true,
+ "cwd": "${workspaceRoot}",
+ "valuesFormatting": "parseText",
+ "gdbpath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gdb",
+ "autorun": [
+ "set auto-load safe-path ${workspaceFolder}",
+ "source ${workspaceFolder}/../tools/.gdbinit",
+ ],
+ "internalConsoleOptions": "neverOpen",
+ "printCalls": false,
+ "preLaunchTask": "launch-qemu"
+ },
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 00000000..c62e8400
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,28 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "launch-qemu",
+ "type": "shell",
+ "command": "make -C ../ build && make -C ../ vscode_debug_only",
+ "isBackground": true,
+ "problemMatcher": [],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "presentation": {
+ "reveal": "always",
+ "panel": "shared"
+ },
+ "options": {
+ "shell": {
+ "executable": "bash",
+ "args": [
+ "-c"
+ ]
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Drivers/.vscode/launch.json b/Drivers/.vscode/launch.json
new file mode 120000
index 00000000..e4eab602
--- /dev/null
+++ b/Drivers/.vscode/launch.json
@@ -0,0 +1 @@
+../../.vscode/launch.json
\ No newline at end of file
diff --git a/Drivers/.vscode/tasks.json b/Drivers/.vscode/tasks.json
new file mode 120000
index 00000000..5edb3db9
--- /dev/null
+++ b/Drivers/.vscode/tasks.json
@@ -0,0 +1 @@
+../../.vscode/tasks.json
\ No newline at end of file
diff --git a/Fennix Drivers.code-workspace b/Fennix Drivers.code-workspace
index b98b60d0..8e991c02 100644
--- a/Fennix Drivers.code-workspace
+++ b/Fennix Drivers.code-workspace
@@ -6,6 +6,10 @@
],
"settings": {
"terminal.integrated.cwd": "../",
- "debug.allowBreakpointsEverywhere": true
+ "debug.allowBreakpointsEverywhere": true,
+ "git.alwaysSignOff": true,
+ "git.defaultBranchName": "master",
+ "git.openRepositoryInParentFolders": "always",
+ "C_Cpp.autoAddFileAssociations": false
}
}
\ No newline at end of file
diff --git a/Fennix Kernel.code-workspace b/Fennix Kernel.code-workspace
index ee829d9c..51fdeb16 100644
--- a/Fennix Kernel.code-workspace
+++ b/Fennix Kernel.code-workspace
@@ -22,6 +22,10 @@
"editor.cursorBlinking": "blink",
"editor.cursorSmoothCaretAnimation": "on",
"editor.cursorStyle": "line",
- "editor.cursorWidth": 2
+ "editor.cursorWidth": 2,
+ "git.alwaysSignOff": true,
+ "git.defaultBranchName": "master",
+ "git.openRepositoryInParentFolders": "always",
+ "C_Cpp.autoAddFileAssociations": false
}
}
\ No newline at end of file
diff --git a/Fennix Userspace.code-workspace b/Fennix Userspace.code-workspace
index c91ccfe6..6df54d37 100644
--- a/Fennix Userspace.code-workspace
+++ b/Fennix Userspace.code-workspace
@@ -6,6 +6,10 @@
],
"settings": {
"terminal.integrated.cwd": "../",
- "debug.allowBreakpointsEverywhere": true
+ "debug.allowBreakpointsEverywhere": true,
+ "git.alwaysSignOff": true,
+ "git.defaultBranchName": "master",
+ "git.openRepositoryInParentFolders": "always",
+ "C_Cpp.autoAddFileAssociations": false
}
}
\ No newline at end of file
diff --git a/Fennix Website.code-workspace b/Fennix Website.code-workspace
new file mode 100644
index 00000000..a37c7b65
--- /dev/null
+++ b/Fennix Website.code-workspace
@@ -0,0 +1,14 @@
+{
+ "folders": [
+ {
+ "path": "./tools/website"
+ }
+ ],
+ "settings": {
+ "debug.allowBreakpointsEverywhere": true,
+ "git.alwaysSignOff": true,
+ "git.defaultBranchName": "master",
+ "git.openRepositoryInParentFolders": "always",
+ "C_Cpp.autoAddFileAssociations": false
+ }
+}
\ No newline at end of file
diff --git a/Fennix.code-workspace b/Fennix.code-workspace
index 14008ce4..3602baa6 100644
--- a/Fennix.code-workspace
+++ b/Fennix.code-workspace
@@ -5,6 +5,10 @@
}
],
"settings": {
- "debug.allowBreakpointsEverywhere": true
+ "debug.allowBreakpointsEverywhere": true,
+ "git.alwaysSignOff": true,
+ "git.defaultBranchName": "master",
+ "git.openRepositoryInParentFolders": "always",
+ "C_Cpp.autoAddFileAssociations": false
}
}
\ No newline at end of file
diff --git a/Kernel/.vscode/launch.json b/Kernel/.vscode/launch.json
deleted file mode 100644
index dd87f5bd..00000000
--- a/Kernel/.vscode/launch.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Launch QEMU & debug the kernel",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/../Kernel/fennix.elf",
- "cwd": "${workspaceFolder}",
- "args": [],
- "targetArchitecture": "x64",
- "MIMode": "gdb",
- "miDebuggerPath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gdb",
- "miDebuggerArgs": "",
- "externalConsole": false,
- "additionalSOLibSearchPath": "${workspaceFolder}",
- "internalConsoleOptions": "neverOpen",
- "customLaunchSetupCommands": [
- {
- "text": "target remote localhost:1234",
- "description": "Connect to QEMU remote debugger"
- }
- ],
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- },
- {
- "text": "set breakpoint pending on",
- "description": "Make breakpoint pending on future shared library load."
- },
- {
- "text": "file ${workspaceFolder}/../Kernel/fennix.elf",
- "description": "Load binary"
- },
- {
- "text": "add-symbol-file ${workspaceFolder}/../initrd_tmp_data/bin/utest",
- "description": "Load /bin/utest",
- "ignoreFailures": true
- },
- {
- "text": "source ${workspaceFolder}/../tools/.gdbinit"
- }
- ],
- "preLaunchTask": "launch-qemu"
- },
- {
- "type": "gdb",
- "request": "attach",
- "name": "Launch QEMU & attach to gdbserver",
- "executable": "${workspaceFolder}/../Kernel/fennix.elf",
- "target": ":1234",
- "remote": true,
- "cwd": "${workspaceRoot}",
- "valuesFormatting": "parseText",
- "gdbpath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gdb",
- "autorun": [
- "set auto-load safe-path ${workspaceFolder}",
- "source ${workspaceFolder}/../tools/.gdbinit",
- ],
- "internalConsoleOptions": "neverOpen",
- "printCalls": false,
- "preLaunchTask": "launch-qemu"
- },
- ]
-}
\ No newline at end of file
diff --git a/Kernel/.vscode/launch.json b/Kernel/.vscode/launch.json
new file mode 120000
index 00000000..e4eab602
--- /dev/null
+++ b/Kernel/.vscode/launch.json
@@ -0,0 +1 @@
+../../.vscode/launch.json
\ No newline at end of file
diff --git a/Kernel/.vscode/tasks.json b/Kernel/.vscode/tasks.json
deleted file mode 100644
index 1c699043..00000000
--- a/Kernel/.vscode/tasks.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "launch-qemu",
- "type": "shell",
- "command": "make -C ../ build && make -C ../ vscode_debug_only",
- "isBackground": true,
- "problemMatcher": [],
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "presentation": {
- "reveal": "always",
- "panel": "shared"
- },
- "options": {
- "shell": {
- "executable": "bash",
- "args": ["-c"]
- }
- }
- }
- ]
-}
diff --git a/Kernel/.vscode/tasks.json b/Kernel/.vscode/tasks.json
new file mode 120000
index 00000000..5edb3db9
--- /dev/null
+++ b/Kernel/.vscode/tasks.json
@@ -0,0 +1 @@
+../../.vscode/tasks.json
\ No newline at end of file
diff --git a/Userspace/.vscode/c_boilerplates.code-snippets b/Userspace/.vscode/c_boilerplates.code-snippets
index ef558a13..97157ade 100644
--- a/Userspace/.vscode/c_boilerplates.code-snippets
+++ b/Userspace/.vscode/c_boilerplates.code-snippets
@@ -1,28 +1,164 @@
{
- "Fennix Kernel Header": {
+ "Fennix Userspace C++ Header": {
+ "isFileTemplate": true,
+ "scope": "c,cpp",
"prefix": [
"head",
],
"body": [
- "#ifndef __FENNIX_LIBC_${2:header}_H__",
- "#define __FENNIX_LIBC_${2:header}_H__",
+ "/*",
+ "\tThis file is part of Fennix Userspace.",
+ "",
+ "\tFennix Userspace is free software: you can redistribute it and/or",
+ "\tmodify it under the terms of the GNU General Public License as",
+ "\tpublished by the Free Software Foundation, either version 3 of",
+ "\tthe License, or (at your option) any later version.",
+ "",
+ "\tFennix Userspace is distributed in the hope that it will be useful,",
+ "\tbut WITHOUT ANY WARRANTY; without even the implied warranty of",
+ "\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
+ "\tGNU General Public License for more details.",
+ "",
+ "\tYou should have received a copy of the GNU General Public License",
+ "\talong with Fennix Userspace. If not, see .",
+ "*/",
+ "",
+ "#pragma once",
+ "",
+ "$0",
+ "",
+ "$1",
+ ""
+ ],
+ "description": "Create userspace header."
+ },
+ "Fennix Userspace C Header": {
+ "isFileTemplate": true,
+ "scope": "c,cpp",
+ "prefix": [
+ "headc",
+ ],
+ "body": [
+ "/*",
+ "\tThis file is part of Fennix Userspace.",
+ "",
+ "\tFennix Userspace is free software: you can redistribute it and/or",
+ "\tmodify it under the terms of the GNU General Public License as",
+ "\tpublished by the Free Software Foundation, either version 3 of",
+ "\tthe License, or (at your option) any later version.",
+ "",
+ "\tFennix Userspace is distributed in the hope that it will be useful,",
+ "\tbut WITHOUT ANY WARRANTY; without even the implied warranty of",
+ "\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
+ "\tGNU General Public License for more details.",
+ "",
+ "\tYou should have received a copy of the GNU General Public License",
+ "\talong with Fennix Userspace. If not, see .",
+ "*/",
+ "",
+ "#ifndef __FENNIX_USERSPACE_${1:header}_H__",
+ "#define __FENNIX_USERSPACE_${1:header}_H__",
"",
"#include ",
"",
"$0",
"",
- "#endif // !__FENNIX_LIBC_${2:header}_H__",
+ "#endif // !__FENNIX_USERSPACE_${1:header}_H__",
""
],
- "description": "Create kernel header."
+ "description": "Create userspace header."
},
- "Fennix Kernel brief": {
+ "Fennix C Library Header": {
+ "isFileTemplate": true,
+ "scope": "c,cpp",
"prefix": [
- "brief",
+ "libc",
],
"body": [
- "/** @brief $0 */"
+ "/*",
+ "\tThis file is part of Fennix C Library.",
+ "",
+ "\tFennix C Library is free software: you can redistribute it and/or",
+ "\tmodify it under the terms of the GNU General Public License as",
+ "\tpublished by the Free Software Foundation, either version 3 of",
+ "\tthe License, or (at your option) any later version.",
+ "",
+ "\tFennix C Library is distributed in the hope that it will be useful,",
+ "\tbut WITHOUT ANY WARRANTY; without even the implied warranty of",
+ "\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
+ "\tGNU General Public License for more details.",
+ "",
+ "\tYou should have received a copy of the GNU General Public License",
+ "\talong with Fennix C Library. If not, see .",
+ "*/",
+ "",
+ "#ifndef _${1:header}_H",
+ "#define _${1:header}_H",
+ "",
+ "#ifdef __cplusplus",
+ "extern \"C\"",
+ "{",
+ "#endif // __cplusplus",
+ "",
+ "$0",
+ "",
+ "#ifdef __cplusplus",
+ "}",
+ "#endif // __cplusplus",
+ "",
+ "#endif // !_${1:header}_H",
+ ""
],
- "description": "Create kernel documentation brief."
+ "description": "Create C Library Header."
+ },
+ "Userspace License": {
+ "isFileTemplate": true,
+ "prefix": [
+ "license",
+ ],
+ "body": [
+ "/*",
+ "\tThis file is part of Fennix Userspace.",
+ "",
+ "\tFennix Userspace is free software: you can redistribute it and/or",
+ "\tmodify it under the terms of the GNU General Public License as",
+ "\tpublished by the Free Software Foundation, either version 3 of",
+ "\tthe License, or (at your option) any later version.",
+ "",
+ "\tFennix Userspace is distributed in the hope that it will be useful,",
+ "\tbut WITHOUT ANY WARRANTY; without even the implied warranty of",
+ "\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
+ "\tGNU General Public License for more details.",
+ "",
+ "\tYou should have received a copy of the GNU General Public License",
+ "\talong with Fennix Userspace. If not, see .",
+ "*/"
+ ],
+ "description": "Create userspace license."
+ },
+ "C Library License": {
+ "isFileTemplate": true,
+ "prefix": [
+ "license_libc",
+ ],
+ "body": [
+ "/*",
+ "\tThis file is part of Fennix C Library.",
+ "",
+ "\tFennix C Library is free software: you can redistribute it and/or",
+ "\tmodify it under the terms of the GNU General Public License as",
+ "\tpublished by the Free Software Foundation, either version 3 of",
+ "\tthe License, or (at your option) any later version.",
+ "",
+ "\tFennix C Library is distributed in the hope that it will be useful,",
+ "\tbut WITHOUT ANY WARRANTY; without even the implied warranty of",
+ "\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
+ "\tGNU General Public License for more details.",
+ "",
+ "\tYou should have received a copy of the GNU General Public License",
+ "\talong with Fennix C Library. If not, see .",
+ "*/"
+ ],
+ "description": "Create libc license."
}
}
\ No newline at end of file
diff --git a/Userspace/.vscode/c_cpp_properties.json b/Userspace/.vscode/c_cpp_properties.json
index ba4af986..b2913213 100644
--- a/Userspace/.vscode/c_cpp_properties.json
+++ b/Userspace/.vscode/c_cpp_properties.json
@@ -3,16 +3,11 @@
{
"name": "Fennix x64 (Linux, GCC, debug)",
"includePath": [
- "${workspaceFolder}/out/include/**",
- "${workspaceFolder}/libs/include/**",
- "${workspaceFolder}/libs/include"
+ "${workspaceFolder}/libc/include/**",
+ "${workspaceFolder}/libs/include/**"
],
"defines": [
"__debug_vscode__",
- "KERNEL_NAME=\"Fennix\"",
- "KERNEL_VERSION=\"1.0\"",
- "GIT_COMMIT=\"0000000000000000000000000000000000000000\"",
- "GIT_COMMIT_SHORT=\"0000000\"",
"DEBUG=\"1\""
],
"compilerPath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gcc",
@@ -29,10 +24,8 @@
"-pipe",
"-ffunction-sections",
"-fno-builtin",
-
// C++ flags
"-fexceptions",
-
// Linker flags
"-fPIC",
"-fPIE",
@@ -42,7 +35,6 @@
"-nolibc",
"-zmax-page-size=0x1000",
"-static",
-
// VSCode flags
"-ffreestanding",
"-nostdinc",
@@ -52,16 +44,11 @@
{
"name": "Fennix x32 (Linux, GCC, debug)",
"includePath": [
- "${workspaceFolder}/out/include/**",
- "${workspaceFolder}/libs/include/**",
- "${workspaceFolder}/libs/include"
+ "${workspaceFolder}/libc/include/**",
+ "${workspaceFolder}/libs/include/**"
],
"defines": [
"__debug_vscode__",
- "KERNEL_NAME=\"Fennix\"",
- "KERNEL_VERSION=\"1.0\"",
- "GIT_COMMIT=\"0000000000000000000000000000000000000000\"",
- "GIT_COMMIT_SHORT=\"0000000\"",
"DEBUG=\"1\""
],
"compilerPath": "${workspaceFolder}/../tools/cross/bin/i386-fennix-gcc",
@@ -78,10 +65,8 @@
"-pipe",
"-ffunction-sections",
"-fno-builtin",
-
// C++ flags
"-fexceptions",
-
// Linker flags
"-fPIC",
"-fPIE",
@@ -91,7 +76,6 @@
"-nolibc",
"-zmax-page-size=0x1000",
"-static",
-
// VSCode flags
"-ffreestanding",
"-nostdinc",
diff --git a/Userspace/.vscode/launch.json b/Userspace/.vscode/launch.json
deleted file mode 100644
index 3bcd82dc..00000000
--- a/Userspace/.vscode/launch.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "/bin/init",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/out/bin/init",
- "cwd": "${workspaceFolder}",
- "args": [],
- "targetArchitecture": "x64",
- "MIMode": "gdb",
- "miDebuggerPath": "/usr/bin/gdb",
- "miDebuggerArgs": "",
- "externalConsole": false,
- "additionalSOLibSearchPath": "${workspaceFolder}",
- "customLaunchSetupCommands": [
- {
- "text": "target remote localhost:1234",
- "description": "Connect to QEMU remote debugger"
- }
- ],
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- },
- {
- "text": "set breakpoint pending on",
- "description": "Make breakpoint pending on future shared library load."
- },
- {
- "text": "file ${workspaceFolder}/out/bin/init",
- "description": "Load binary."
- },
- {
- "text": "add-symbol-file ${workspaceFolder}/../Kernel/fennix.elf",
- "description": "Load kernel binary."
- },
- ]
- },
- {
- "name": "/lib/ld.so",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/out/lib/ld.so",
- "cwd": "${workspaceFolder}",
- "args": [],
- "targetArchitecture": "x64",
- "MIMode": "gdb",
- "miDebuggerPath": "/usr/bin/gdb",
- "miDebuggerArgs": "",
- "externalConsole": false,
- "additionalSOLibSearchPath": "${workspaceFolder}",
- "customLaunchSetupCommands": [
- {
- "text": "target remote localhost:1234",
- "description": "Connect to QEMU remote debugger"
- }
- ],
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- },
- {
- "text": "set breakpoint pending on",
- "description": "Make breakpoint pending on future shared library load."
- },
- {
- "text": "file ${workspaceFolder}/out/lib/ld.so",
- "description": "Load binary."
- },
- {
- "text": "add-symbol-file ${workspaceFolder}/../Kernel/fennix.elf",
- "description": "Load kernel binary."
- },
- ]
- },
- {
- "name": "/usr/bin/doom",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/out/usr/bin/doom",
- "cwd": "${workspaceFolder}",
- "args": [],
- "targetArchitecture": "x64",
- "MIMode": "gdb",
- "miDebuggerPath": "/usr/bin/gdb",
- "miDebuggerArgs": "",
- "externalConsole": false,
- "additionalSOLibSearchPath": "${workspaceFolder}",
- "customLaunchSetupCommands": [
- {
- "text": "target remote localhost:1234",
- "description": "Connect to QEMU remote debugger"
- }
- ],
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- },
- {
- "text": "set breakpoint pending on",
- "description": "Make breakpoint pending on future shared library load."
- },
- {
- "text": "file ${workspaceFolder}/out/usr/bin/doom",
- "description": "Load binary."
- },
- {
- "text": "add-symbol-file ${workspaceFolder}/../Kernel/fennix.elf",
- "description": "Load kernel binary."
- },
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/Userspace/.vscode/launch.json b/Userspace/.vscode/launch.json
new file mode 120000
index 00000000..e4eab602
--- /dev/null
+++ b/Userspace/.vscode/launch.json
@@ -0,0 +1 @@
+../../.vscode/launch.json
\ No newline at end of file
diff --git a/Userspace/.vscode/preinclude.h b/Userspace/.vscode/preinclude.h
new file mode 100644
index 00000000..c5d17039
--- /dev/null
+++ b/Userspace/.vscode/preinclude.h
@@ -0,0 +1,8 @@
+#undef __linux__
+#undef __WIN32__
+#undef __WIN64__
+#undef _WIN32
+#undef _WIN64
+#undef __APPLE__
+#undef __clang__
+#define __vscode__ 1
diff --git a/Userspace/.vscode/settings.json b/Userspace/.vscode/settings.json
new file mode 100644
index 00000000..d0a212b6
--- /dev/null
+++ b/Userspace/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "git.openRepositoryInParentFolders": "always",
+ "git.alwaysSignOff": true,
+ "git.defaultBranchName": "master"
+}
\ No newline at end of file
diff --git a/Userspace/.vscode/tasks.json b/Userspace/.vscode/tasks.json
new file mode 120000
index 00000000..5edb3db9
--- /dev/null
+++ b/Userspace/.vscode/tasks.json
@@ -0,0 +1 @@
+../../.vscode/tasks.json
\ No newline at end of file