Update to work on real hardware
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# LeOS Coding Style
|
||||
|
||||
## Files names
|
||||
|
||||
1. Only lower case
|
||||
2. Words separated with underscore:
|
||||
```
|
||||
aarch64/aarch64_boot.S
|
||||
```
|
||||
|
||||
## Preprocessor macro constants
|
||||
|
||||
1. Only upper case
|
||||
2. Words separated with underscore:
|
||||
|
||||
```
|
||||
#define AARCH64_CORE0_TIMER_IRQCTL (*((uint32_t *) 0x40000040))
|
||||
```
|
||||
|
||||
## Types
|
||||
|
||||
1. Camel case started from upper case
|
||||
2. Do not typedef transparent structures
|
||||
3. Members of structre should be named in camel case started from lower case
|
||||
|
||||
```
|
||||
struct Task {
|
||||
void *sp;
|
||||
void *stackStart;
|
||||
uint32_t pid;
|
||||
uint32_t stackSize;
|
||||
uint32_t lock;
|
||||
uint32_t counter;
|
||||
uint32_t cycles;
|
||||
int32_t priority;
|
||||
uint32_t state;
|
||||
char name[CONFIG_TASK_MAX_NAME_LEN + 1];
|
||||
struct Task *next;
|
||||
};
|
||||
```
|
||||
|
||||
## Constants and variables
|
||||
|
||||
1. Global constants and variablesmust be prefixed with `g_`
|
||||
2. Module (static) constants and variable must be prefixed `m_`
|
||||
3. Camel case
|
||||
|
||||
```
|
||||
static struct Task *m_currentTask = NULL;
|
||||
```
|
||||
|
||||
## Functions
|
||||
|
||||
1. Camel case
|
||||
2. Prefix separated from function identifier by underscore
|
||||
3. Static functions may have no prefix
|
||||
4. Prefix always starts from capital letter
|
||||
5. Function identifier always starts from lower case verb
|
||||
|
||||
```
|
||||
unsigned int
|
||||
AArch64_getEL(void);
|
||||
|
||||
static struct Task *
|
||||
scheduleNext(void);
|
||||
```
|
||||
|
||||
## Namespaces and prefixes
|
||||
|
||||
1. Due to C has no native namespaces, prefixes should always be used
|
||||
2. Prefix should match with file name
|
||||
|
||||
```
|
||||
/* file : task.h */
|
||||
|
||||
void
|
||||
Task_initSheduler(void);
|
||||
|
||||
```
|
||||
@@ -0,0 +1,10 @@
|
||||
# Project Structure
|
||||
|
||||
* `build/` - temporary output folder
|
||||
* `docs/` - documentation folder
|
||||
* `kernel/` - kernel source codes
|
||||
* `aarch64/` - core AArch64 architecture code
|
||||
* `drivers/` - code for various drivers
|
||||
* `leos/` - code of the core LeOS features
|
||||
* `Makefile` - kernel specific makefile
|
||||
* `Makefile` - root project makefile
|
||||
|
||||
Reference in New Issue
Block a user