linux.hh revision 6640
16019Shines@cs.fsu.edu/*
26019Shines@cs.fsu.edu * Copyright (c) 2003-2005 The Regents of The University of Michigan
36019Shines@cs.fsu.edu * Copyright (c) 2007-2008 The Florida State University
46019Shines@cs.fsu.edu * All rights reserved.
56019Shines@cs.fsu.edu *
66019Shines@cs.fsu.edu * Redistribution and use in source and binary forms, with or without
76019Shines@cs.fsu.edu * modification, are permitted provided that the following conditions are
86019Shines@cs.fsu.edu * met: redistributions of source code must retain the above copyright
96019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer;
106019Shines@cs.fsu.edu * redistributions in binary form must reproduce the above copyright
116019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer in the
126019Shines@cs.fsu.edu * documentation and/or other materials provided with the distribution;
136019Shines@cs.fsu.edu * neither the name of the copyright holders nor the names of its
146019Shines@cs.fsu.edu * contributors may be used to endorse or promote products derived from
156019Shines@cs.fsu.edu * this software without specific prior written permission.
166019Shines@cs.fsu.edu *
176019Shines@cs.fsu.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
186019Shines@cs.fsu.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
196019Shines@cs.fsu.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
206019Shines@cs.fsu.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
216019Shines@cs.fsu.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
226019Shines@cs.fsu.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
236019Shines@cs.fsu.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
246019Shines@cs.fsu.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
256019Shines@cs.fsu.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
266019Shines@cs.fsu.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
276019Shines@cs.fsu.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
286019Shines@cs.fsu.edu *
296019Shines@cs.fsu.edu * Authors: Stephen Hines
306019Shines@cs.fsu.edu */
316019Shines@cs.fsu.edu
326019Shines@cs.fsu.edu#ifndef __ARCH_ARM_LINUX_LINUX_HH__
336019Shines@cs.fsu.edu#define __ARCH_ARM_LINUX_LINUX_HH__
346019Shines@cs.fsu.edu
356019Shines@cs.fsu.edu#include "kern/linux/linux.hh"
366019Shines@cs.fsu.edu
376019Shines@cs.fsu.educlass ArmLinux : public Linux
386019Shines@cs.fsu.edu{
396019Shines@cs.fsu.edu  public:
406019Shines@cs.fsu.edu
416019Shines@cs.fsu.edu    /// This table maps the target open() flags to the corresponding
426019Shines@cs.fsu.edu    /// host open() flags.
436019Shines@cs.fsu.edu    static OpenFlagTransTable openFlagTable[];
446019Shines@cs.fsu.edu
456019Shines@cs.fsu.edu    /// Number of entries in openFlagTable[].
466019Shines@cs.fsu.edu    static const int NUM_OPEN_FLAGS;
476019Shines@cs.fsu.edu
486019Shines@cs.fsu.edu    //@{
496019Shines@cs.fsu.edu    /// open(2) flag values.
506341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_RDONLY    = 00000000; //!< O_RDONLY
516341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_WRONLY    = 00000001; //!< O_WRONLY
526341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_RDWR      = 00000002; //!< O_RDWR
536341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_CREAT     = 00000100; //!< O_CREAT
546341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_EXCL      = 00000200; //!< O_EXCL
556341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_NOCTTY    = 00000400; //!< O_NOCTTY
566341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_TRUNC     = 00001000; //!< O_TRUNC
576341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_APPEND    = 00002000; //!< O_APPEND
586341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_NONBLOCK  = 00004000; //!< O_NONBLOCK
596341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_SYNC      = 00010000; //!< O_SYNC
606341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_FASYNC      = 00020000; //!< FASYNC
616341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_DIRECTORY = 00040000; //!< O_DIRECTORY
626341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_NOFOLLOW  = 00100000; //!< O_NOFOLLOW
636341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_DIRECT    = 00200000; //!< O_DIRECT
646341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_LARGEFILE = 00400000; //!< O_LARGEFILE
656341Sjack-m5ml2@cs.york.ac.uk    static const int TGT_O_NOATIME   = 01000000; //!< O_NOATIME
666019Shines@cs.fsu.edu    //@}
676019Shines@cs.fsu.edu
686019Shines@cs.fsu.edu    /// For mmap().
696413Ssaidi@eecs.umich.edu    static const unsigned TGT_MAP_ANONYMOUS = 0x20;
706019Shines@cs.fsu.edu
716019Shines@cs.fsu.edu    //@{
726019Shines@cs.fsu.edu    /// For getrusage().
736019Shines@cs.fsu.edu    static const int TGT_RUSAGE_SELF = 0;
746019Shines@cs.fsu.edu    static const int TGT_RUSAGE_CHILDREN = -1;
756019Shines@cs.fsu.edu    static const int TGT_RUSAGE_BOTH = -2;
766019Shines@cs.fsu.edu    //@}
776019Shines@cs.fsu.edu
786019Shines@cs.fsu.edu    //@{
796019Shines@cs.fsu.edu    /// ioctl() command codes.
806415Ssaidi@eecs.umich.edu    static const unsigned TIOCGETP_   = 0x5401;
816019Shines@cs.fsu.edu    static const unsigned TIOCSETP_   = 0x80067409;
826019Shines@cs.fsu.edu    static const unsigned TIOCSETN_   = 0x8006740a;
836019Shines@cs.fsu.edu    static const unsigned TIOCSETC_   = 0x80067411;
846019Shines@cs.fsu.edu    static const unsigned TIOCGETC_   = 0x40067412;
856019Shines@cs.fsu.edu    static const unsigned FIONREAD_   = 0x4004667f;
866019Shines@cs.fsu.edu    static const unsigned TIOCISATTY_ = 0x2000745e;
876019Shines@cs.fsu.edu    static const unsigned TIOCGETS_   = 0x402c7413;
886019Shines@cs.fsu.edu    static const unsigned TIOCGETA_   = 0x40127417;
896019Shines@cs.fsu.edu    //@}
906019Shines@cs.fsu.edu
916019Shines@cs.fsu.edu    /// For table().
926019Shines@cs.fsu.edu    static const int TBL_SYSINFO = 12;
936019Shines@cs.fsu.edu
946019Shines@cs.fsu.edu    /// Resource enumeration for getrlimit().
956019Shines@cs.fsu.edu    enum rlimit_resources {
966019Shines@cs.fsu.edu        TGT_RLIMIT_CPU = 0,
976019Shines@cs.fsu.edu        TGT_RLIMIT_FSIZE = 1,
986019Shines@cs.fsu.edu        TGT_RLIMIT_DATA = 2,
996019Shines@cs.fsu.edu        TGT_RLIMIT_STACK = 3,
1006019Shines@cs.fsu.edu        TGT_RLIMIT_CORE = 4,
1016413Ssaidi@eecs.umich.edu        TGT_RLIMIT_RSS = 5,
1026413Ssaidi@eecs.umich.edu        TGT_RLIMIT_NPROC = 6,
1036413Ssaidi@eecs.umich.edu        TGT_RLIMIT_NOFILE = 7,
1046413Ssaidi@eecs.umich.edu        TGT_RLIMIT_MEMLOCK = 8,
1056413Ssaidi@eecs.umich.edu        TGT_RLIMIT_AS = 9,
1066019Shines@cs.fsu.edu        TGT_RLIMIT_LOCKS = 10
1076019Shines@cs.fsu.edu    };
1086019Shines@cs.fsu.edu
1096395Ssaidi@eecs.umich.edu    typedef struct {
1106395Ssaidi@eecs.umich.edu        uint32_t st_dev;
1116395Ssaidi@eecs.umich.edu        uint32_t st_ino;
1126395Ssaidi@eecs.umich.edu        uint16_t st_mode;
1136395Ssaidi@eecs.umich.edu        uint16_t st_nlink;
1146395Ssaidi@eecs.umich.edu        uint16_t st_uid;
1156395Ssaidi@eecs.umich.edu        uint16_t st_gid;
1166395Ssaidi@eecs.umich.edu        uint32_t st_rdev;
1176395Ssaidi@eecs.umich.edu        uint32_t st_size;
1186395Ssaidi@eecs.umich.edu        uint32_t st_blksize;
1196395Ssaidi@eecs.umich.edu        uint32_t st_blocks;
1206395Ssaidi@eecs.umich.edu        uint32_t st_atimeX;
1216395Ssaidi@eecs.umich.edu        uint32_t st_atime_nsec;
1226395Ssaidi@eecs.umich.edu        uint32_t st_mtimeX;
1236395Ssaidi@eecs.umich.edu        uint32_t st_mtime_nsec;
1246395Ssaidi@eecs.umich.edu        uint32_t st_ctimeX;
1256395Ssaidi@eecs.umich.edu        uint32_t st_ctime_nsec;
1266395Ssaidi@eecs.umich.edu    } tgt_stat;
1276395Ssaidi@eecs.umich.edu
1286395Ssaidi@eecs.umich.edu    typedef struct {
1296395Ssaidi@eecs.umich.edu        uint64_t  st_dev;
1306395Ssaidi@eecs.umich.edu        uint8_t   __pad0[4];
1316395Ssaidi@eecs.umich.edu        uint32_t  __st_ino;
1326395Ssaidi@eecs.umich.edu        uint32_t  st_mode;
1336395Ssaidi@eecs.umich.edu        uint32_t  st_nlink;
1346395Ssaidi@eecs.umich.edu        uint32_t  st_uid;
1356395Ssaidi@eecs.umich.edu        uint32_t  st_gid;
1366395Ssaidi@eecs.umich.edu        uint64_t  st_rdev;
1376395Ssaidi@eecs.umich.edu        uint8_t   __pad3[4];
1386395Ssaidi@eecs.umich.edu        int64_t   __attribute__ ((aligned (8))) st_size;
1396395Ssaidi@eecs.umich.edu        uint32_t  st_blksize;
1406395Ssaidi@eecs.umich.edu        uint64_t  __attribute__ ((aligned (8))) st_blocks;
1416395Ssaidi@eecs.umich.edu        uint32_t  st_atimeX;
1426395Ssaidi@eecs.umich.edu        uint32_t  st_atime_nsec;
1436395Ssaidi@eecs.umich.edu        uint32_t  st_mtimeX;
1446395Ssaidi@eecs.umich.edu        uint32_t  st_mtime_nsec;
1456395Ssaidi@eecs.umich.edu        uint32_t  st_ctimeX;
1466395Ssaidi@eecs.umich.edu        uint32_t  st_ctime_nsec;
1476395Ssaidi@eecs.umich.edu        uint64_t  st_ino;
1486395Ssaidi@eecs.umich.edu    } tgt_stat64;
1496395Ssaidi@eecs.umich.edu
1506640Svince@csl.cornell.edu    typedef struct {
1516640Svince@csl.cornell.edu        int32_t  uptime;    /* Seconds since boot */
1526640Svince@csl.cornell.edu        uint32_t loads[3];  /* 1, 5, and 15 minute load averages */
1536640Svince@csl.cornell.edu        uint32_t totalram;  /* Total usable main memory size */
1546640Svince@csl.cornell.edu        uint32_t freeram;   /* Available memory size */
1556640Svince@csl.cornell.edu        uint32_t sharedram; /* Amount of shared memory */
1566640Svince@csl.cornell.edu        uint32_t bufferram; /* Memory used by buffers */
1576640Svince@csl.cornell.edu        uint32_t totalswap; /* Total swap space size */
1586640Svince@csl.cornell.edu        uint32_t freeswap;  /* swap space still available */
1596640Svince@csl.cornell.edu        uint16_t procs;     /* Number of current processes */
1606640Svince@csl.cornell.edu        uint32_t totalhigh; /* Total high memory size */
1616640Svince@csl.cornell.edu        uint32_t freehigh;  /* Available high memory size */
1626640Svince@csl.cornell.edu        uint32_t mem_unit;  /* Memory unit size in bytes */
1636640Svince@csl.cornell.edu    } tgt_sysinfo;
1646640Svince@csl.cornell.edu
1656395Ssaidi@eecs.umich.edu
1666019Shines@cs.fsu.edu};
1676019Shines@cs.fsu.edu
1686019Shines@cs.fsu.edu#endif
169