mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
cpu/atmega_common: Improve POSIX headers
This commit is contained in:
parent
89ba41c79e
commit
738876a98f
@ -101,8 +101,8 @@
|
||||
#ifndef TIME_H
|
||||
#define TIME_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -111,12 +111,6 @@ extern "C" {
|
||||
/** \ingroup avr_time */
|
||||
/* @{ */
|
||||
|
||||
/**
|
||||
time_t represents seconds elapsed from Midnight, Jan 1 2000 UTC (the Y2K 'epoch').
|
||||
Its range allows this implementation to represent time up to Tue Feb 7 06:28:15 2136 UTC.
|
||||
*/
|
||||
typedef uint32_t time_t;
|
||||
|
||||
/**
|
||||
The time function returns the systems current time stamp.
|
||||
If timer is not a null pointer, the return value is also assigned to the object it points to.
|
||||
|
120
cpu/atmega_common/include/sys/stat.h
Normal file
120
cpu/atmega_common/include/sys/stat.h
Normal file
@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Eistec AB
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief POSIX compatible sys/stat.h definitions
|
||||
* @author Joakim Nohlgård <joakim.nohlgard@eistec.se>
|
||||
*/
|
||||
|
||||
#ifndef SYS_STAT_H_
|
||||
#define SYS_STAT_H_
|
||||
|
||||
#include <time.h> /* for struct timespec */
|
||||
#include <sys/types.h> /* for fsblkcnt_t, fsfilcnt_t */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief File information
|
||||
*/
|
||||
struct stat {
|
||||
dev_t st_dev; /**< Device ID of device containing file. */
|
||||
ino_t st_ino; /**< File serial number. */
|
||||
mode_t st_mode; /**< Mode of file (see below). */
|
||||
nlink_t st_nlink; /**< Number of hard links to the file. */
|
||||
uid_t st_uid; /**< User ID of file. */
|
||||
gid_t st_gid; /**< Group ID of file. */
|
||||
dev_t st_rdev; /**< Device ID (if file is character or block special). */
|
||||
/**
|
||||
* For regular files, the file size in bytes.
|
||||
* For symbolic links, the length in bytes of the pathname contained in the
|
||||
* symbolic link.
|
||||
* For a shared memory object, the length in bytes.
|
||||
* For a typed memory object, the length in bytes.
|
||||
* For other file types, the use of this field is unspecified.
|
||||
*/
|
||||
off_t st_size;
|
||||
struct timespec st_atim; /**< Last data access timestamp. */
|
||||
struct timespec st_mtim; /**< Last data modification timestamp. */
|
||||
struct timespec st_ctim; /**< Last file status change timestamp. */
|
||||
/**
|
||||
* A file system-specific preferred I/O block size for this object. In some
|
||||
* file system types, this may vary from file to file.
|
||||
*/
|
||||
blksize_t st_blksize;
|
||||
blkcnt_t st_blocks; /**< Number of blocks allocated for this object. */
|
||||
};
|
||||
|
||||
/* These bitmasks and numbers are the same as in newlib */
|
||||
#define S_IFMT 0170000 /* type of file */
|
||||
#define S_IFDIR 0040000 /* directory */
|
||||
#define S_IFCHR 0020000 /* character special */
|
||||
#define S_IFBLK 0060000 /* block special */
|
||||
#define S_IFREG 0100000 /* regular */
|
||||
#define S_IFLNK 0120000 /* symbolic link */
|
||||
#define S_IFSOCK 0140000 /* socket */
|
||||
#define S_IFIFO 0010000 /* fifo */
|
||||
|
||||
/* These numbers are well-known and can be found in the manual page for sys_stat.h */
|
||||
#define S_IRWXU 0700 /**< Read, write, execute/search by owner. */
|
||||
#define S_IRUSR 0400 /**< Read permission, owner. */
|
||||
#define S_IWUSR 0200 /**< Write permission, owner. */
|
||||
#define S_IXUSR 0100 /**< Execute/search permission, owner. */
|
||||
#define S_IRWXG 070 /**< Read, write, execute/search by group. */
|
||||
#define S_IRGRP 040 /**< Read permission, group. */
|
||||
#define S_IWGRP 020 /**< Write permission, group. */
|
||||
#define S_IXGRP 010 /**< Execute/search permission, group. */
|
||||
#define S_IRWXO 07 /**< Read, write, execute/search by others. */
|
||||
#define S_IROTH 04 /**< Read permission, others. */
|
||||
#define S_IWOTH 02 /**< Write permission, others. */
|
||||
#define S_IXOTH 01 /**< Execute/search permission, others. */
|
||||
#define S_ISUID 04000 /**< Set-user-ID on execution. */
|
||||
#define S_ISGID 02000 /**< Set-group-ID on execution. */
|
||||
#define S_ISVTX 01000 /**< On directories, restricted deletion flag */
|
||||
|
||||
/* File type test macros, taken from newlib */
|
||||
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
|
||||
/* These function prototypes are required by the standard */
|
||||
int chmod(const char *, mode_t);
|
||||
int fchmod(int, mode_t);
|
||||
int fchmodat(int, const char *, mode_t, int);
|
||||
int fstat(int, struct stat *);
|
||||
int fstatat(int, const char *restrict, struct stat *restrict, int);
|
||||
int futimens(int, const struct timespec [2]);
|
||||
int lstat(const char *restrict, struct stat *restrict);
|
||||
int mkdir(const char *, mode_t);
|
||||
int mkdirat(int, const char *, mode_t);
|
||||
int mkfifo(const char *, mode_t);
|
||||
int mkfifoat(int, const char *, mode_t);
|
||||
int mknod(const char *, mode_t, dev_t);
|
||||
int mknodat(int, const char *, mode_t, dev_t);
|
||||
int stat(const char *restrict, struct stat *restrict);
|
||||
mode_t umask(mode_t);
|
||||
int utimensat(int, const char *, const struct timespec [2], int);
|
||||
|
||||
/* Special tv_nsec values for futimens(2) and utimensat(2). */
|
||||
#define UTIME_NOW (-2L)
|
||||
#define UTIME_OMIT (-1L)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SYS_STAT_H_ */
|
||||
|
||||
/** @} */
|
@ -7,22 +7,41 @@
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
#ifndef AVR_TYPES_H
|
||||
#define AVR_TYPES_H
|
||||
#ifndef SYS_TYPES_H_
|
||||
#define SYS_TYPES_H_
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef int16_t suseconds_t;
|
||||
typedef signed int ssize_t;
|
||||
typedef unsigned int off_t;
|
||||
typedef int32_t blkcnt_t; /**< Used for file block counts */
|
||||
typedef int32_t blksize_t; /**< Used for block sizes */
|
||||
typedef uint32_t clock_t; /**< Used for system times in clock ticks */
|
||||
typedef uint32_t clockid_t; /**< Used for clock ID type in the clock and timer functions */
|
||||
typedef int16_t dev_t; /**< Used for device IDs */
|
||||
typedef uint32_t fsblkcnt_t; /**< Used for file system block counts */
|
||||
typedef uint32_t fsfilcnt_t; /**< Used for file system file counts */
|
||||
typedef uint16_t gid_t; /**< Used for group IDs */
|
||||
typedef uint16_t id_t; /**< Used as a general identifier */
|
||||
typedef uint32_t ino_t; /**< Used for file serial numbers */
|
||||
typedef uint32_t key_t; /**< Used for XSI interprocess communication */
|
||||
typedef uint32_t mode_t; /**< Used for some file attributes */
|
||||
typedef uint16_t nlink_t; /**< Used for link counts */
|
||||
typedef int32_t off_t; /**< Used for file sizes and offsets */
|
||||
typedef int pid_t; /**< Used for process IDs and process group IDs */
|
||||
typedef unsigned int size_t; /**< Used for sizes of objects */
|
||||
typedef signed int ssize_t; /**< Used for a count of bytes or an error indication */
|
||||
typedef int32_t suseconds_t; /**< Used for time in microseconds */
|
||||
typedef int32_t time_t; /**< Used for time in seconds */
|
||||
typedef uint32_t timer_t; /**< Used for timer ID returned by timer_create() */
|
||||
typedef uint16_t uid_t; /**< Used for user IDs */
|
||||
typedef uint32_t useconds_t; /**< Used for time in microseconds */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ifndef AVR_TYPES_H */
|
||||
#endif /* SYS_TYPES_H_ */
|
||||
|
@ -818,6 +818,7 @@ EXCLUDE_SYMLINKS = NO
|
||||
# exclude all test directories for example use the pattern */test/*
|
||||
|
||||
EXCLUDE_PATTERNS = */board/*/tools/* \
|
||||
*/cpu/atmega_common/include/sys/*.h \
|
||||
*/cpu/msp430_common/include/stdatomic.h \
|
||||
*/cpu/msp430_common/include/sys/*.h \
|
||||
*/cpu/native/osx-libc-extra \
|
||||
|
Loading…
Reference in New Issue
Block a user