Start doxygen bringup, with some miscellaneous cleanup

This commit is contained in:
fincs 2018-01-28 16:22:44 +01:00 committed by plutoo
parent dc785c1fee
commit ff472848a9
17 changed files with 171 additions and 74 deletions

13
.gitignore vendored
View File

@ -1,3 +1,14 @@
*~
*.o *.o
*.bz2 *.bz2
*.nro
*.nso
*.elf
*.npdm
*.pfs0
Thumbs.db
.*/
debug/
release/
lib/
docs/

View File

@ -1,24 +1,26 @@
#### Types # Code Style
TypesAreCapitalizedLikeThis
#### Enums ## Types
EnumType_EnumName `TypesAreCapitalizedLikeThis`
#### Struct members ## Enums
like_this `EnumType_EnumName`
notlikethis ## Struct members
`like_this`
#### Local variables `notlikethis`
like_this
notlikethis ## Local variables
`like_this`
#### Global variables (or global statics) `notlikethis`
g_variableName
#### Functions ## Global variables (or global statics)
modulenameFunctionName `g_variableName`
#### Macros ## Functions
LIKE_THIS `modulenameFunctionName`
## Macros
`LIKE_THIS`

0
Changelog.md Normal file
View File

View File

@ -1,4 +1,4 @@
Copyright 2017 libnx Authors Copyright 2017-2018 libnx Authors
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

View File

@ -4,11 +4,11 @@ Based on libctru.
[![Build status](https://doozer.io/badge/switchbrew/libnx/buildstatus/master)](https://doozer.io/switchbrew/libnx) [![Build status](https://doozer.io/badge/switchbrew/libnx/buildstatus/master)](https://doozer.io/switchbrew/libnx)
# Install instructions # Install instructions
* Setup $DEVKITA64 in your environment. * Install [devkitA64](https://sourceforge.net/projects/devkitpro/files/devkitA64/) to `$DEVKITPRO/devkitA64`.
* make install * `make install`
See also the switch-tools repo if you want to manually build those. See also the [switch-tools](https://github.com/switchbrew/switch-tools) repo if you want to manually build those.
# Icon # Icon
The "default_icon" icon is based on the icon by [Sweet Farm from the Noun Project](https://thenounproject.com/term/nintendo-switch/694750/). `nx/default_icon.jpg` is based on the icon by [Sweet Farm from the Noun Project](https://thenounproject.com/term/nintendo-switch/694750/).

View File

@ -1,4 +1,4 @@
# Doxyfile 1.8.11 # Doxyfile 1.8.13
# This file describes the settings to be used by the documentation system # This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project. # doxygen (www.doxygen.org) for a project.
@ -293,6 +293,15 @@ EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES MARKDOWN_SUPPORT = YES
# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 0.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
# When enabled doxygen tries to link words that correspond to documented # When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can # classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or # be prevented in individual cases by putting a % sign in front of the word or
@ -773,7 +782,9 @@ WARN_LOGFILE =
INPUT = include \ INPUT = include \
../README.md \ ../README.md \
../Changelog.md ../LICENSE.md \
../Changelog.md \
../CODESTYLE.md
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@ -795,8 +806,8 @@ INPUT_ENCODING = UTF-8
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, # *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. # *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
FILE_PATTERNS = *.h \ FILE_PATTERNS = *.h \
*.c \ *.c \
@ -1983,7 +1994,7 @@ ENABLE_PREPROCESSING = YES
# The default value is: NO. # The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = NO MACRO_EXPANSION = YES
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and # the macro expansion is limited to the macros specified with the PREDEFINED and
@ -2023,7 +2034,8 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator. # recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED = PREDEFINED = SWITCH \
__attribute__(x)=
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The # tag can be used to specify a list of macro names that should be expanded. The
@ -2345,6 +2357,11 @@ DIAFILE_DIRS =
PLANTUML_JAR_PATH = PLANTUML_JAR_PATH =
# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
# configuration file for plantuml.
PLANTUML_CFG_FILE =
# When using plantuml, the specified paths are searched for files specified by # When using plantuml, the specified paths are searched for files specified by
# the !include statement in a plantuml block. # the !include statement in a plantuml block.
@ -2409,4 +2426,3 @@ GENERATE_LEGEND = YES
# This tag requires that the tag HAVE_DOT is set to YES. # This tag requires that the tag HAVE_DOT is set to YES.
DOT_CLEANUP = YES DOT_CLEANUP = YES

View File

@ -1,6 +1,7 @@
/** /**
* @file switch.h * @file switch.h
* @brief Central Switch header. Includes all others. * @brief Central Switch header. Includes all others.
* @copyright libnx Authors
*/ */
#pragma once #pragma once

View File

@ -1,7 +1,37 @@
/**
* @file cache.h
* @brief AArch64 cache operations.
* @author plutoo
* @copyright libnx Authors
*/
#pragma once #pragma once
#include "../types.h"
/**
* @brief Performs a data cache flush on the specified buffer.
* @param addr Address of the buffer.
* @param size Size of the buffer, in bytes.
* @remarks Cache flush is defined as Clean + Invalidate.
*/
void armDCacheFlush(void* addr, size_t size); void armDCacheFlush(void* addr, size_t size);
/**
* @brief Performs a data cache clean on the specified buffer.
* @param addr Address of the buffer.
* @param size Size of the buffer, in bytes.
*/
void armDCacheClean(void* addr, size_t size); void armDCacheClean(void* addr, size_t size);
/**
* @brief Performs an instruction cache invalidation clean on the specified buffer.
* @param addr Address of the buffer.
* @param size Size of the buffer, in bytes.
*/
void armICacheInvalidate(void* addr, size_t size); void armICacheInvalidate(void* addr, size_t size);
/**
* @brief Performs a data cache zeroing operation on the specified buffer.
* @param addr Address of the buffer.
* @param size Size of the buffer, in bytes.
*/
void armDCacheZero(void* addr, size_t size); void armDCacheZero(void* addr, size_t size);

View File

@ -1,5 +1,16 @@
/**
* @file tls.h
* @brief AArch64 thread local storage.
* @author plutoo
* @copyright libnx Authors
*/
#pragma once #pragma once
#include "../types.h"
/**
* @brief Gets the thread local storage buffer.
* @return The thread local storage buffer.
*/
static inline void* armGetTls(void) { static inline void* armGetTls(void) {
void* ret; void* ret;
__asm__ ("mrs %x[data], tpidrro_el0" : [data] "=r" (ret)); __asm__ ("mrs %x[data], tpidrro_el0" : [data] "=r" (ret));

View File

@ -1,14 +1,22 @@
// Copyright 2017 plutoo /**
* @file ipc.h
* @brief Inter-process communication handling
* @author plutoo
* @copyright libnx Authors
*/
#pragma once #pragma once
#include "result.h" #include "result.h"
#include "arm/tls.h" #include "arm/tls.h"
#include "kernel/svc.h" #include "kernel/svc.h"
/// IPC input header magic
#define SFCI_MAGIC 0x49434653 #define SFCI_MAGIC 0x49434653
/// IPC output header magic
#define SFCO_MAGIC 0x4f434653 #define SFCO_MAGIC 0x4f434653
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
/// IPC command structure.
typedef struct { typedef struct {
size_t NumSend; // A size_t NumSend; // A
size_t NumRecv; // B size_t NumRecv; // B

View File

@ -1,6 +1,7 @@
/** /**
* @file svc.h * @file svc.h
* @brief Syscall wrappers. * @brief Syscall wrappers.
* @copyright libnx Authors
*/ */
#pragma once #pragma once
#include "../types.h" #include "../types.h"
@ -24,7 +25,7 @@ typedef struct {
typedef struct { typedef struct {
u64 X[8]; u64 X[8];
} __attribute__((packed)) SecmonArgs; } PACKED SecmonArgs;
typedef enum { typedef enum {
JitMapOperation_MapOwner=0, JitMapOperation_MapOwner=0,

View File

@ -1,6 +1,7 @@
/** /**
* @file result.h * @file result.h
* @brief Switch result code tools * @brief Switch result code tools.
* @copyright libnx Authors
*/ */
#pragma once #pragma once
#include "types.h" #include "types.h"
@ -18,11 +19,13 @@
#define MAKERESULT(module,description) \ #define MAKERESULT(module,description) \
((((module)&0x1FF)) | ((description)&0x1FFF)<<9) ((((module)&0x1FF)) | ((description)&0x1FFF)<<9)
/// Module values
enum { enum {
Module_Libnx=345, Module_Libnx=345,
Module_LibnxNvidia=348 Module_LibnxNvidia=348,
}; };
/// libnx error codes
enum { enum {
LibnxError_BadReloc=1, LibnxError_BadReloc=1,
LibnxError_OutOfMemory, LibnxError_OutOfMemory,
@ -63,24 +66,25 @@ enum {
LibnxError_IncompatSysVer, LibnxError_IncompatSysVer,
}; };
/// libnx nvidia error codes
enum { enum {
LibnxNvidiaError_Unknown=1, LibnxNvidiaError_Unknown=1,
LibnxNvidiaError_NotImplemented, // Maps to Nvidia: 1 LibnxNvidiaError_NotImplemented, ///< Maps to Nvidia: 1
LibnxNvidiaError_NotSupported, // Maps to Nvidia: 2 LibnxNvidiaError_NotSupported, ///< Maps to Nvidia: 2
LibnxNvidiaError_NotInitialized, // Maps to Nvidia: 3 LibnxNvidiaError_NotInitialized, ///< Maps to Nvidia: 3
LibnxNvidiaError_BadParameter, // Maps to Nvidia: 4 LibnxNvidiaError_BadParameter, ///< Maps to Nvidia: 4
LibnxNvidiaError_Timeout, // Maps to Nvidia: 5 LibnxNvidiaError_Timeout, ///< Maps to Nvidia: 5
LibnxNvidiaError_InsufficientMemory, // Maps to Nvidia: 6 LibnxNvidiaError_InsufficientMemory, ///< Maps to Nvidia: 6
LibnxNvidiaError_ReadOnlyAttribute, // Maps to Nvidia: 7 LibnxNvidiaError_ReadOnlyAttribute, ///< Maps to Nvidia: 7
LibnxNvidiaError_InvalidState, // Maps to Nvidia: 8 LibnxNvidiaError_InvalidState, ///< Maps to Nvidia: 8
LibnxNvidiaError_InvalidAddress, // Maps to Nvidia: 9 LibnxNvidiaError_InvalidAddress, ///< Maps to Nvidia: 9
LibnxNvidiaError_InvalidSize, // Maps to Nvidia: 10 LibnxNvidiaError_InvalidSize, ///< Maps to Nvidia: 10
LibnxNvidiaError_BadValue, // Maps to Nvidia: 11 LibnxNvidiaError_BadValue, ///< Maps to Nvidia: 11
LibnxNvidiaError_AlreadyAllocated, // Maps to Nvidia: 13 LibnxNvidiaError_AlreadyAllocated, ///< Maps to Nvidia: 13
LibnxNvidiaError_Busy, // Maps to Nvidia: 14 LibnxNvidiaError_Busy, ///< Maps to Nvidia: 14
LibnxNvidiaError_ResourceError, // Maps to Nvidia: 15 LibnxNvidiaError_ResourceError, ///< Maps to Nvidia: 15
LibnxNvidiaError_CountMismatch, // Maps to Nvidia: 16 LibnxNvidiaError_CountMismatch, ///< Maps to Nvidia: 16
LibnxNvidiaError_SharedMemoryTooSmall, // Maps to Nvidia: 0x1000 LibnxNvidiaError_SharedMemoryTooSmall, ///< Maps to Nvidia: 0x1000
LibnxNvidiaError_FileOperationFailed, // Maps to Nvidia: 0x30003 LibnxNvidiaError_FileOperationFailed, ///< Maps to Nvidia: 0x30003
LibnxNvidiaError_IoctlFailed, // Maps to Nvidia: 0x3000F LibnxNvidiaError_IoctlFailed, ///< Maps to Nvidia: 0x3000F
}; };

View File

@ -1,6 +1,9 @@
/** /**
* @file console.h * @file console.h
* @brief Switch stdio support. * @brief Framebuffer text console.
* @author yellows8
* @author WinterMute
* @copyright libnx Authors
* *
* Provides stdio integration for printing to the Switch screen as well as debug print * Provides stdio integration for printing to the Switch screen as well as debug print
* functionality provided by stderr. * functionality provided by stderr.
@ -161,4 +164,3 @@ void consoleDebugInit(debugDevice device);
/// Clears the screan by using iprintf("\x1b[2J"); /// Clears the screan by using iprintf("\x1b[2J");
void consoleClear(void); void consoleClear(void);

View File

@ -1,22 +1,25 @@
/** /**
* @file fs_dev.h * @file fs_dev.h
* @brief FS driver. * @brief FS driver, using devoptab.
* @author yellows8
* @author mtheall
* @copyright libnx Authors
*/ */
#pragma once #pragma once
#include <sys/types.h> #include <sys/types.h>
#include "../../services/fs.h" #include "../../services/fs.h"
#define FSDEV_DIRITER_MAGIC 0x66736476 /* "fsdv" */ #define FSDEV_DIRITER_MAGIC 0x66736476 ///< "fsdv"
/*! Open directory struct */ /// Open directory struct
typedef struct typedef struct
{ {
u32 magic; /*! "fsdv" */ u32 magic; ///< "fsdv"
FsDir fd; FsDir fd; ///< File descriptor
ssize_t index; /*! Current entry index */ ssize_t index; ///< Current entry index
size_t size; /*! Current batch size */ size_t size; ///< Current batch size
FsDirectoryEntry entry_data[32]; /*! Temporary storage for reading entries */ FsDirectoryEntry entry_data[32]; ///< Temporary storage for reading entries
} fsdev_dir_t; } fsdev_dir_t;
/// Initializes the FS driver. Automatically initializes the sdmc device if accessible. If called again, sdmc mounting will be attempted again if it's not mounted. /// Initializes the FS driver. Automatically initializes the sdmc device if accessible. If called again, sdmc mounting will be attempted again if it's not mounted.
@ -35,4 +38,3 @@ int fsdevUnmountDevice(const char *name);
/// Uses fsFsCommit() with the specified device. This must be used after any savedata-write operations(not just file-write). /// Uses fsFsCommit() with the specified device. This must be used after any savedata-write operations(not just file-write).
/// This is not used automatically at device unmount. /// This is not used automatically at device unmount.
Result fsdevCommitDevice(const char *name); Result fsdevCommitDevice(const char *name);

View File

@ -1,3 +1,10 @@
/**
* @file usb_comms.h
* @brief USB comms.
* @author yellows8
* @author plutoo
* @copyright libnx Authors
*/
#pragma once #pragma once
#include "../../types.h" #include "../../types.h"
@ -6,4 +13,3 @@ void usbCommsExit(void);
size_t usbCommsRead(void* buffer, size_t size); size_t usbCommsRead(void* buffer, size_t size);
size_t usbCommsWrite(const void* buffer, size_t size); size_t usbCommsWrite(const void* buffer, size_t size);

View File

@ -1,6 +1,8 @@
/** /**
* @file utf.h * @file utf.h
* @brief UTF conversion functions. * @brief UTF conversion functions.
* @author mtheall
* @copyright libnx Authors
*/ */
#pragma once #pragma once
#include <sys/types.h> #include <sys/types.h>

View File

@ -1,6 +1,7 @@
/** /**
* @file types.h * @file types.h
* @brief Various system types. * @brief Various system types.
* @copyright libnx Authors
*/ */
#pragma once #pragma once
@ -11,7 +12,6 @@
/// The maximum value of a u64. /// The maximum value of a u64.
#define U64_MAX UINT64_MAX #define U64_MAX UINT64_MAX
/// would be nice if newlib had this already
#ifndef SSIZE_MAX #ifndef SSIZE_MAX
#ifdef SIZE_MAX #ifdef SIZE_MAX
#define SSIZE_MAX ((SIZE_MAX) >> 1) #define SSIZE_MAX ((SIZE_MAX) >> 1)
@ -39,19 +39,20 @@ typedef volatile s16 vs16; ///< 16-bit volatile signed integer.
typedef volatile s32 vs32; ///< 32-bit volatile signed integer. typedef volatile s32 vs32; ///< 32-bit volatile signed integer.
typedef volatile s64 vs64; ///< 64-bit volatile signed integer. typedef volatile s64 vs64; ///< 64-bit volatile signed integer.
typedef u32 Handle; ///< Resource handle. typedef u32 Handle; ///< Kernel object handle.
typedef u32 Result; ///< Function result. typedef u32 Result; ///< Function error code result type.
typedef void (*ThreadFunc)(void *); ///< Thread entrypoint function. typedef void (*ThreadFunc)(void *); ///< Thread entrypoint function.
typedef void (*voidfn)(void); typedef void (*voidfn)(void); ///< Function without arguments nor return value.
/// Permission bitmasks
typedef enum { typedef enum {
PERM_NONE = 0, PERM_NONE = 0, ///< No permissions.
PERM_R = 1, PERM_R = 1, ///< Read permission.
PERM_W = 2, PERM_W = 2, ///< Write permission.
PERM_X = 4, PERM_X = 4, ///< Execute permission.
PERM_RW = PERM_R | PERM_W, PERM_RW = PERM_R | PERM_W, ///< Read/write permissions.
PERM_RX = PERM_R | PERM_X, PERM_RX = PERM_R | PERM_X, ///< Read/execute permissions.
PERM_DONTCARE = 0x10000000 PERM_DONTCARE = 0x10000000, ///< Don't care
} Permission; } Permission;
/// Creates a bitmask from a bit number. /// Creates a bitmask from a bit number.