LCOV - code coverage report
Current view: top level - zephyr/posix/sys - stat.h Coverage Total Hit
Test: new.info Lines: 0.0 % 57 0
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /* SPDX-License-Identifier: BSD-3-Clause */
       2              : /*
       3              :  * Copyright (c) 1982, 1986, 1993
       4              :  * The Regents of the University of California.  All rights reserved.
       5              :  *
       6              :  * Redistribution and use in source and binary forms, with or without
       7              :  * modification, are permitted provided that the following conditions
       8              :  * are met:
       9              :  * 1. Redistributions of source code must retain the above copyright
      10              :  * notice, this list of conditions and the following disclaimer.
      11              :  * 2. Redistributions in binary form must reproduce the above copyright
      12              :  * notice, this list of conditions and the following disclaimer in the
      13              :  * documentation and/or other materials provided with the distribution.
      14              :  * 3. Neither the name of the University nor the names of its contributors
      15              :  * may be used to endorse or promote products derived from this software
      16              :  * without specific prior written permission.
      17              :  *
      18              :  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      19              :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      20              :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      21              :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      22              :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      23              :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      24              :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      25              :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      26              :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      27              :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      28              :  * SUCH DAMAGE.
      29              :  */
      30              : #ifndef ZEPHYR_POSIX_SYS_STAT_H_
      31              : #define ZEPHYR_POSIX_SYS_STAT_H_
      32              : 
      33              : #ifdef __cplusplus
      34              : extern "C" {
      35              : #endif
      36              : 
      37              : #include <time.h>
      38              : #include <sys/cdefs.h>
      39              : 
      40              : #include <zephyr/posix/posix_types.h>
      41              : 
      42              : /* dj's stat defines _STAT_H_ */
      43              : #ifndef _STAT_H_
      44              : 
      45              : /*
      46              :  * It is intended that the layout of this structure not change when the
      47              :  * sizes of any of the basic types change (short, int, long) [via a compile
      48              :  * time option].
      49              :  */
      50              : 
      51              : #ifdef __CYGWIN__
      52              : #include <cygwin/stat.h>
      53              : #ifdef _LIBC
      54              : #define stat64 stat
      55              : #endif
      56              : #else
      57            0 : struct stat {
      58            0 :         dev_t st_dev;
      59            0 :         ino_t st_ino;
      60            0 :         mode_t st_mode;
      61            0 :         nlink_t st_nlink;
      62            0 :         uid_t st_uid;
      63            0 :         gid_t st_gid;
      64              : #if defined(__linux) && defined(__x86_64__)
      65              :         int __pad0;
      66              : #endif
      67            0 :         dev_t st_rdev;
      68              : #if defined(__linux) && !defined(__x86_64__)
      69              :         unsigned short int __pad2;
      70              : #endif
      71            0 :         off_t st_size;
      72              : #if defined(__linux)
      73              :         blksize_t st_blksize;
      74              :         blkcnt_t st_blocks;
      75              :         struct timespec st_atim;
      76              :         struct timespec st_mtim;
      77              :         struct timespec st_ctim;
      78              : #define st_atime st_atim.tv_sec /* Backward compatibility */
      79              : #define st_mtime st_mtim.tv_sec
      80              : #define st_ctime st_ctim.tv_sec
      81              : #if defined(__linux) && defined(__x86_64__)
      82              :         uint64_t __glibc_reserved[3];
      83              : #endif
      84              : #else
      85              : #if defined(__rtems__)
      86              :         struct timespec st_atim;
      87              :         struct timespec st_mtim;
      88              :         struct timespec st_ctim;
      89              :         blksize_t st_blksize;
      90              :         blkcnt_t st_blocks;
      91              : #else
      92              :         /* SysV/sco doesn't have the rest... But Solaris, eabi does.  */
      93              : #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)
      94              :         time_t st_atime;
      95              :         time_t st_mtime;
      96              :         time_t st_ctime;
      97              : #else
      98            0 :         struct timespec st_atim;
      99            0 :         struct timespec st_mtim;
     100            0 :         struct timespec st_ctim;
     101            0 :         blksize_t st_blksize;
     102            0 :         blkcnt_t st_blocks;
     103              : #if !defined(__rtems__)
     104            0 :         long st_spare4[2];
     105              : #endif
     106              : #endif
     107              : #endif
     108              : #endif
     109              : };
     110              : 
     111              : #if !(defined(__svr4__) && !defined(__PPC__) && !defined(__sun__))
     112            0 : #define st_atime st_atim.tv_sec
     113            0 : #define st_ctime st_ctim.tv_sec
     114            0 : #define st_mtime st_mtim.tv_sec
     115              : #endif
     116              : 
     117              : #endif
     118              : 
     119              : #define _IFMT   0170000 /* type of file */
     120              : #define _IFDIR  0040000 /* directory */
     121              : #define _IFCHR  0020000 /* character special */
     122              : #define _IFBLK  0060000 /* block special */
     123              : #define _IFREG  0100000 /* regular */
     124              : #define _IFLNK  0120000 /* symbolic link */
     125              : #define _IFSOCK 0140000 /* socket */
     126              : #define _IFIFO  0010000 /* fifo */
     127              : 
     128            0 : #define S_BLKSIZE 1024 /* size of a block */
     129              : 
     130            0 : #define S_ISUID 0004000 /* set user id on execution */
     131            0 : #define S_ISGID 0002000 /* set group id on execution */
     132            0 : #define S_ISVTX 0001000 /* save swapped text even after use */
     133              : #if __BSD_VISIBLE
     134              : #define S_IREAD  0000400 /* read permission, owner */
     135              : #define S_IWRITE 0000200 /* write permission, owner */
     136              : #define S_IEXEC  0000100 /* execute/search permission, owner */
     137              : #define S_ENFMT  0002000 /* enforcement-mode locking */
     138              : #endif                   /* !_BSD_VISIBLE */
     139              : 
     140            0 : #define S_IFMT   _IFMT
     141            0 : #define S_IFDIR  _IFDIR
     142            0 : #define S_IFCHR  _IFCHR
     143            0 : #define S_IFBLK  _IFBLK
     144            0 : #define S_IFREG  _IFREG
     145            0 : #define S_IFLNK  _IFLNK
     146            0 : #define S_IFSOCK _IFSOCK
     147            0 : #define S_IFIFO  _IFIFO
     148              : 
     149              : #ifdef _WIN32
     150              : /*
     151              :  * The Windows header files define _S_ forms of these, so we do too
     152              :  * for easier portability.
     153              :  */
     154              : #define _S_IFMT   _IFMT
     155              : #define _S_IFDIR  _IFDIR
     156              : #define _S_IFCHR  _IFCHR
     157              : #define _S_IFIFO  _IFIFO
     158              : #define _S_IFREG  _IFREG
     159              : #define _S_IREAD  0000400
     160              : #define _S_IWRITE 0000200
     161              : #define _S_IEXEC  0000100
     162              : #endif
     163              : 
     164            0 : #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
     165            0 : #define S_IRUSR 0000400 /* read permission, owner */
     166            0 : #define S_IWUSR 0000200 /* write permission, owner */
     167            0 : #define S_IXUSR 0000100 /* execute/search permission, owner */
     168            0 : #define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
     169            0 : #define S_IRGRP 0000040 /* read permission, group */
     170            0 : #define S_IWGRP 0000020 /* write permission, grougroup */
     171            0 : #define S_IXGRP 0000010 /* execute/search permission, group */
     172            0 : #define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
     173            0 : #define S_IROTH 0000004 /* read permission, other */
     174            0 : #define S_IWOTH 0000002 /* write permission, other */
     175            0 : #define S_IXOTH 0000001 /* execute/search permission, other */
     176              : 
     177              : #if __BSD_VISIBLE
     178              : #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)                               /* 0777 */
     179              : #define ALLPERMS    (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */
     180              : #define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) /* 0666 */
     181              : #endif
     182              : 
     183            0 : #define S_ISBLK(m)  (((m)&_IFMT) == _IFBLK)
     184            0 : #define S_ISCHR(m)  (((m)&_IFMT) == _IFCHR)
     185            0 : #define S_ISDIR(m)  (((m)&_IFMT) == _IFDIR)
     186            0 : #define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO)
     187            0 : #define S_ISREG(m)  (((m)&_IFMT) == _IFREG)
     188            0 : #define S_ISLNK(m)  (((m)&_IFMT) == _IFLNK)
     189            0 : #define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK)
     190              : 
     191              : #if defined(__CYGWIN__) || defined(__rtems__)
     192              : /* Special tv_nsec values for futimens(2) and utimensat(2). */
     193              : #define UTIME_NOW  -2L
     194              : #define UTIME_OMIT -1L
     195              : #endif
     196              : 
     197            0 : int chmod(const char *__path, mode_t __mode);
     198            0 : int fchmod(int __fd, mode_t __mode);
     199            0 : int fstat(int __fd, struct stat *__sbuf);
     200            0 : int mkdir(const char *_path, mode_t __mode);
     201            0 : int mkfifo(const char *__path, mode_t __mode);
     202            0 : int stat(const char *__restrict __path, struct stat *__restrict __sbuf);
     203            0 : mode_t umask(mode_t __mask);
     204              : 
     205              : #if defined(__SPU__) || defined(__rtems__) || defined(__CYGWIN__) && !defined(__INSIDE_CYGWIN__)
     206              : int lstat(const char *__restrict __path, struct stat *__restrict __buf);
     207              : int mknod(const char *__path, mode_t __mode, dev_t __dev);
     208              : #endif
     209              : 
     210              : #if __ATFILE_VISIBLE && !defined(__INSIDE_CYGWIN__)
     211              : int fchmodat(int __fd, const char *__path, mode_t __mode, int __flag);
     212              : int fstatat(int __fd, const char *__restrict __path, struct stat *__restrict __buf, int __flag);
     213              : int mkdirat(int __fd, const char *__path, mode_t __mode);
     214              : int mkfifoat(int __fd, const char *__path, mode_t __mode);
     215              : int mknodat(int __fd, const char *__path, mode_t __mode, dev_t __dev);
     216              : int utimensat(int __fd, const char *__path, const struct timespec __times[2], int __flag);
     217              : #endif
     218              : #if __POSIX_VISIBLE >= 200809 && !defined(__INSIDE_CYGWIN__)
     219              : int futimens(int __fd, const struct timespec __times[2]);
     220              : #endif
     221              : 
     222              : /*
     223              :  * Provide prototypes for most of the _<systemcall> names that are
     224              :  * provided in newlib for some compilers.
     225              :  */
     226              : #ifdef _LIBC
     227              : int _fstat(int __fd, struct stat *__sbuf);
     228              : int _stat(const char *__restrict __path, struct stat *__restrict __sbuf);
     229              : int _mkdir(const char *_path, mode_t __mode);
     230              : #ifdef __LARGE64_FILES
     231              : struct stat64;
     232              : int _stat64(const char *__restrict __path, struct stat64 *__restrict __sbuf);
     233              : int _fstat64(int __fd, struct stat64 *__sbuf);
     234              : #endif
     235              : #endif
     236              : 
     237              : #endif /* !_STAT_H_ */
     238              : #ifdef __cplusplus
     239              : }
     240              : #endif
     241              : #endif /* ZEPHYR_POSIX_SYS_STAT_H_ */
        

Generated by: LCOV version 2.0-1