Mbed OS version of IoT.js implementation running on GR-PEACH

ビルド方法

ビルド環境セットアップ

Host PC要件 : Ubuntu 16.04 (64-bit)



1. 以下のコマンドを実行し、下表に示すツールをインストールします。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install [Package]
PackageVersion
build-essential12.1ubuntu2
gyp0.1+20150913git1f374df9-1ubuntu1
mercurial3.7.3-1ubuntu1
cmake3.5.1-1ubuntu3
git1:2.7.4-0ubuntu1.4
python2.72.7.12-1ubuntu016.04.3
valgrind1:3.11.0-1ubuntu4.2
python-pip8.1.1-2ubuntu0.4

2. 以下のコマンドを実行してMbed OS用ビルドツール mbed CLIをインストールします。

$ sudo -H pip install mbed-cli

3. GNU Arm Embedded Toolchainをインストールします。

  • ダウンロードしたファイルを任意のディレクトリに展開します。
    (以下、展開先を${TOOLCHAIN}と記載します)

tar xjf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2
  • ツールチェインのパスを設定します。

環境変数を使用する場合

$ export GCC_ARM_ROOT=${TOOLCHAIN}/gcc-arm-none-eabi-6-2017-q2-update/bin
$ export PATH=$GCC_ARM_ROOT:$PATH

mbed CLIで指定する場合

$ mbed config -G GCC_ARM_PATH $GCC_ARM_ROOT

iotjs環境のビルド

1. 本プログラムのクローン

下記コマンドを実行し、本プログラムをクローンしてください。

$ hg clone https://HinoNaka@os.mbed.com/users/HinoNaka/code/GR-PEACH_mbed-os-iotjs/

クローンが正常に終了すると、GR-PEACH_mbed-os-iotjs という名称のディレクトリが生成されますので、下記コマンドで当該ディレクトリへ移動してください。

$ cd GR-PEACH_mbed-os-iotjs

(Optional)
GR-PEACH-mbed-os-iotjsディレクトリを指す環境変数 ROOTを設定してください。以降の記載は本環境変数が設定されているものとします。

$ export ROOT=$(PWD)

2. 作業用ディレクトリ(e.g. work)を作成し、当該ディレクトリに移動してください。

$ mkdir -p work
$ cd work

(Optional)
作業用ディレクトリを指す環境変数 WORK を設定してください。以降の記載は本環境変数 が設定されているものとします。

$ export WORK=$(PWD)

3. iotjsのソースツリーを取得します。

$ git clone https://github.com/pando-project/iotjs

クローンが正常に終了するとiotjsというディレクトリが生成されますので、当該ディレクトリに移動してください。

$cd iotjs

コミットID: acae9c8b2d40e7598b8d39b630b79113ce880a7e を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix acae9c8b2d40e7598b8d39b630b79113ce880a7e

4. mbed-osセットアップ
Mbed OSソースツリーを格納するフォルダを生成し、当該フォルダへ移動します。

$ mkdir -p $(WORK)/iotjs/src/platform/mbedos5
$ cd $(WORK)/iotjs/src/platform/mbedos5

Mbed OSのソースツリーをクローンします。

$ git clone -b mbed-os-5.9 https://github.com/ARMmbed/mbed-os.git

クローンが正常に終了するとmbed-osというディレクトリが生成されますので、当該ディレクトリに移動してください。

$ cd mbed-os

コミットID: 50bd61a4a72332baa6b1bac6caccb44dc5423309 を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix 50bd61a4a72332baa6b1bac6caccb44dc5423309

5. sd-driverの取得
下記コマンドでmbedos5ディレクトリへ移動します。

$ cd $(WORK)/iotjs/src/platform/mbedos5

sd-driverをクローンします。

$ git clone https://github.com/ARMmbed/sd-driver.git

クローンが正常終了するとsd-driverディレクトリが生成されますので、当該ディレクトリへ移動します。

$ cd sd-driver

コミットID: c8ae38fb291e086232566b0f1372cfb69c277e84 を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix c8ae38fb291e086232566b0f1372cfb69c277e84

6. mbed-gr-libsの取得
下記コマンドでmbedos5ディレクトリへ移動します。

$ cd $(WORK)/iotjs/src/platform/mbedos5

mbed-gr-libsをクローンします。

$ git clone https://github.com/d-kato/mbed-gr-libs

クローンが正常終了するとmbed-gr-libsディレクトリが生成されますので、当該ディレクトリへ移動します。

$ cd mbed-gr-libs

コミットID: d921d611d596ecaebaab49070ef82450c583309c を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix d921d611d596ecaebaab49070ef82450c583309c

7. AsciiFONTの取得
下記コマンドでmbedos5ディレクトリへ移動します。

$ cd $(WORK)/iotjs/src/platform/mbedos5

AsciiFONTライブラリを追加します。

$ mbed add https://os.mbed.com/teams/Renesas/code/AsciiFont/

8. iotjs環境のビルド
下記コマンドでiotjs環境のビルドディレクトリに移動し、ビルドを実行します。

$ cd $(WORK)/iotjs
$ ./tools/build.py --no-snapshot

9. GR-PEACH用コードのコピー
(Optional) 既存のiotjs環境に上書きする場合、下記コマンドを実行してください。

$ rm -rf $(WORK)/iotjs/deps/posix
$ rm -rf $(WORK)/iotjs/src/ext-modules
$ rm -rf $(WORK)/iotjs/src/platform/mbedos5/iotjs_def.h

下記コマンドでGR-PEACH用コードをコピーします。

$ cp -pr $(ROOT)/src/iotjs/* $(WORK)/iotjs/

10. lwipパッチ適用
以下コマンドでlwipパッチを適用します。

$ cd $(WORK)/iotjs/src/platform/mbedos5/mbed-os
$ git apply lwip_improve.patch

11. ESP32 TRNG対応パッチ適用
以下コマンドでESP32のTRNGを活用するためのパッチを適用します。

$ cd $(WORK)/iotjs/src/platform/mbedos5/mbed-os
$ git apply trng_support.patch

12. Mbed OS版iotjs環境のビルド
下記コマンドを実行してMbed OS版iotjs環境をビルドします。
(リリースビルドの場合)

$ cd $(WORK)/iotjs/src/platform/mbedos5
$ make clean; make DEBUG=0

(デバッグビルドの場合)

$ cd $(WORK)/iotjs/src/platform/mbedos5
$ make clean; make DEBUG=1

13. ビルドが正常に終了すると、以下の通りバイナリが生成されます。
(リリースビルドの場合)

$ ls -l ${WORK}/iotjs/src/platform/mbedos5/BUILD/RZ_A1H/GCC_ARM-RELEASE/iotjs.bin

(デバッグビルドの場合)

$ ls -l ${WORK}/iotjs/src/platform/mbedos5/BUILD/RZ_A1H/GCC_ARM-DEBUG/iotjs.bin

実行方法

1. GR-PEACHにmicro SDカードを挿入します。

2. GR-PEACHのEthernetポートから遠い側のUSBポートとHost PCをマイクロUSBケーブルで接続します。

3. Host PCでGR-PEACHが『mbed:』ドライブとして認識されたら、iotjs.binをmbedドライブにコピーします。

4. ターミナルS/Wを立上げ、『mbed Serial Port』と接続します。
/media/uploads/HinoNaka/img1.jpg
シリアルポートは下記設定としてください。

Baud rate115200
Data8 bit
Paritynone
Stop1 bit
Flow controlnone

5. 正常に書込みが終了したらGR-PEACHのRESETボタンを押下します。

6. ターミナルS/W上に下記メッセージが表示されます。
/media/uploads/HinoNaka/img2.jpg

7. Enterキーを押下してコード入力モードに移行します。
/media/uploads/HinoNaka/img3.jpg

8. 実行するJavascriptコードをターミナルソフトウェアに貼り付けてEnterキーを押下すると、実行開始します。Javascriptコード例については、test/case.txtを参照ください。

Committer:
Osamu Nakamura
Date:
Thu Jul 11 18:48:09 2019 +0900
Revision:
0:7cc000799c93
Initial commit of iotjs core

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Osamu Nakamura 0:7cc000799c93 1 /* Copyright 2017-present Renesas Electronics Corporation and other contributors
Osamu Nakamura 0:7cc000799c93 2 *
Osamu Nakamura 0:7cc000799c93 3 * Licensed under the Apache License, Version 2.0 (the "License");
Osamu Nakamura 0:7cc000799c93 4 * you may not use this file except in compliance with the License.
Osamu Nakamura 0:7cc000799c93 5 * You may obtain a copy of the License at
Osamu Nakamura 0:7cc000799c93 6 *
Osamu Nakamura 0:7cc000799c93 7 * http://www.apache.org/licenses/LICENSE-2.0
Osamu Nakamura 0:7cc000799c93 8 *
Osamu Nakamura 0:7cc000799c93 9 * Unless required by applicable law or agreed to in writing, software
Osamu Nakamura 0:7cc000799c93 10 * distributed under the License is distributed on an "AS IS" BASIS
Osamu Nakamura 0:7cc000799c93 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Osamu Nakamura 0:7cc000799c93 12 * See the License for the specific language governing permissions and
Osamu Nakamura 0:7cc000799c93 13 * limitations under the License.
Osamu Nakamura 0:7cc000799c93 14 */
Osamu Nakamura 0:7cc000799c93 15
Osamu Nakamura 0:7cc000799c93 16 #ifndef POSIX4_INCL
Osamu Nakamura 0:7cc000799c93 17 #define POSIX4_INCL
Osamu Nakamura 0:7cc000799c93 18
Osamu Nakamura 0:7cc000799c93 19 #include "./posix4_aux.h"
Osamu Nakamura 0:7cc000799c93 20
Osamu Nakamura 0:7cc000799c93 21 #ifdef __cplusplus
Osamu Nakamura 0:7cc000799c93 22 extern "C" {
Osamu Nakamura 0:7cc000799c93 23 #endif
Osamu Nakamura 0:7cc000799c93 24
Osamu Nakamura 0:7cc000799c93 25 #define P4_API(type,func) type P4(func)
Osamu Nakamura 0:7cc000799c93 26 #define POSIX_API P4_API
Osamu Nakamura 0:7cc000799c93 27 #define LINUX_API P4_API
Osamu Nakamura 0:7cc000799c93 28 #define OVRDN_API P4_API
Osamu Nakamura 0:7cc000799c93 29 #define NIC_API P4_API
Osamu Nakamura 0:7cc000799c93 30
Osamu Nakamura 0:7cc000799c93 31 POSIX_API(char*, getcwd(char* buf, P4(size_t) size));
Osamu Nakamura 0:7cc000799c93 32 POSIX_API(int, chdir(const char* path));
Osamu Nakamura 0:7cc000799c93 33 POSIX_API(int, fdatasync(int fd));
Osamu Nakamura 0:7cc000799c93 34 POSIX_API(int, fsync(int fd));
Osamu Nakamura 0:7cc000799c93 35 POSIX_API(int, ftruncate(int fd, P4(off_t) length));
Osamu Nakamura 0:7cc000799c93 36 POSIX_API(int, scandir(const char* dirp, struct P4(dirent)*** namelist, int (*filter)(const struct P4(dirent)*), int (*compar)(const struct P4(dirent)**, const struct P4(dirent)**)));
Osamu Nakamura 0:7cc000799c93 37 POSIX_API(int, utime(const char* filename, const struct utimbuf* times));
Osamu Nakamura 0:7cc000799c93 38 POSIX_API(int, utimes(const char* filename, const struct timeval times[2]));
Osamu Nakamura 0:7cc000799c93 39 POSIX_API(P4(ssize_t), pread(int fd, void* buf, P4(size_t) count, P4(off_t) offset));
Osamu Nakamura 0:7cc000799c93 40 POSIX_API(P4(ssize_t), pwrite(int fd, const void* buf, P4(size_t) count, P4(off_t) offset));
Osamu Nakamura 0:7cc000799c93 41 POSIX_API(P4(ssize_t), readv(int fd, const struct P4(iovec)* iov, int iovcnt));
Osamu Nakamura 0:7cc000799c93 42 POSIX_API(P4(ssize_t), writev(int fd, const struct P4(iovec)* iov, int iovcnt));
Osamu Nakamura 0:7cc000799c93 43 POSIX_API(int, utimensat(int dirfd, const char* pathname, const struct P4(timespec) times[2], int flags));
Osamu Nakamura 0:7cc000799c93 44
Osamu Nakamura 0:7cc000799c93 45 POSIX_API(int, clock_getres(P4(clockid_t) clk_id, struct P4(timespec)* res));
Osamu Nakamura 0:7cc000799c93 46 POSIX_API(int, clock_gettime(P4(clockid_t) clk_id, struct P4(timespec)* tp));
Osamu Nakamura 0:7cc000799c93 47
Osamu Nakamura 0:7cc000799c93 48 POSIX_API(int, pthread_create(P4(pthread_t)* thread, P4(pthread_attr_t)* attr, void* (*start_routine)(void*), void* arg));
Osamu Nakamura 0:7cc000799c93 49 POSIX_API(int, pthread_join(P4(pthread_t) thread, void** retval));
Osamu Nakamura 0:7cc000799c93 50 POSIX_API(int, pthread_once(P4(pthread_once_t)* once_control, void (*init_routine)(void)));
Osamu Nakamura 0:7cc000799c93 51 POSIX_API(int, pthread_sigmask(int how, const P4(sigset_t)* set, P4(sigset_t)* oldset));
Osamu Nakamura 0:7cc000799c93 52 POSIX_API(int, pthread_attr_destroy(P4(pthread_attr_t)* attr));
Osamu Nakamura 0:7cc000799c93 53 POSIX_API(int, pthread_cond_destroy(P4(pthread_cond_t)* cond));
Osamu Nakamura 0:7cc000799c93 54 POSIX_API(int, pthread_cond_init(P4(pthread_cond_t)* cond, P4(pthread_condattr_t)* cond_attr));
Osamu Nakamura 0:7cc000799c93 55 POSIX_API(int, pthread_cond_signal(P4(pthread_cond_t)* cond));
Osamu Nakamura 0:7cc000799c93 56 POSIX_API(int, pthread_cond_wait(P4(pthread_cond_t)* cond, P4(pthread_mutex_t)* mutex));
Osamu Nakamura 0:7cc000799c93 57 POSIX_API(int, pthread_condattr_destroy(P4(pthread_condattr_t)* attr));
Osamu Nakamura 0:7cc000799c93 58 POSIX_API(int, pthread_condattr_init(P4(pthread_condattr_t)* attr));
Osamu Nakamura 0:7cc000799c93 59 POSIX_API(int, pthread_condattr_setclock(P4(pthread_condattr_t)* attr, clockid_t clock_id));
Osamu Nakamura 0:7cc000799c93 60 POSIX_API(int, pthread_mutex_destroy(P4(pthread_mutex_t)* mutex));
Osamu Nakamura 0:7cc000799c93 61 POSIX_API(int, pthread_mutex_init(P4(pthread_mutex_t)* mutex, const P4(pthread_mutexattr_t)* mutexattr));
Osamu Nakamura 0:7cc000799c93 62 POSIX_API(int, pthread_mutex_lock(P4(pthread_mutex_t)* mutex));
Osamu Nakamura 0:7cc000799c93 63 POSIX_API(int, pthread_mutex_unlock(P4(pthread_mutex_t)* mutex));
Osamu Nakamura 0:7cc000799c93 64 POSIX_API(int, pthread_rwlock_destroy(P4(pthread_rwlock_t)* rwlock));
Osamu Nakamura 0:7cc000799c93 65 POSIX_API(int, pthread_rwlock_init(P4(pthread_rwlock_t)* rwlock, const P4(pthread_rwlockattr_t)* attr));
Osamu Nakamura 0:7cc000799c93 66 POSIX_API(int, pthread_rwlock_rdlock(P4(pthread_rwlock_t)* rwlock));
Osamu Nakamura 0:7cc000799c93 67 POSIX_API(int, pthread_rwlock_unlock(P4(pthread_rwlock_t)* rwlock));
Osamu Nakamura 0:7cc000799c93 68 POSIX_API(int, pthread_cond_broadcast(P4(pthread_cond_t)* cond));
Osamu Nakamura 0:7cc000799c93 69 POSIX_API(int, pthread_cond_timedwait(P4(pthread_cond_t)* cond, P4(pthread_mutex_t)* mutex, const struct P4(timespec)* abstime));
Osamu Nakamura 0:7cc000799c93 70 POSIX_API(P4(pthread_t), pthread_self(void));
Osamu Nakamura 0:7cc000799c93 71 POSIX_API(int, pthread_equal(P4(pthread_t) t1, P4(pthread_t) t2));
Osamu Nakamura 0:7cc000799c93 72 POSIX_API(int, pthread_mutex_trylock(P4(pthread_mutex_t)* mutex));
Osamu Nakamura 0:7cc000799c93 73 POSIX_API(int, pthread_rwlock_tryrdlock(P4(pthread_rwlock_t)* rwlock));
Osamu Nakamura 0:7cc000799c93 74 POSIX_API(int, pthread_rwlock_trywrlock(P4(pthread_rwlock_t)* rwlock));
Osamu Nakamura 0:7cc000799c93 75 POSIX_API(int, pthread_rwlock_wrlock(P4(pthread_rwlock_t)* rwlock));
Osamu Nakamura 0:7cc000799c93 76 POSIX_API(int, sem_init(P4(sem_t)* sem, int pshared, unsigned int value));
Osamu Nakamura 0:7cc000799c93 77 POSIX_API(int, sem_destroy(P4(sem_t)* sem));
Osamu Nakamura 0:7cc000799c93 78 POSIX_API(int, sem_wait(P4(sem_t)* sem));
Osamu Nakamura 0:7cc000799c93 79 POSIX_API(int, sem_trywait(P4(sem_t)* sem));
Osamu Nakamura 0:7cc000799c93 80 POSIX_API(int, sem_post(P4(sem_t)* sem));
Osamu Nakamura 0:7cc000799c93 81
Osamu Nakamura 0:7cc000799c93 82 #define CMSG_ALIGN(len) (((len) + sizeof(P4(size_t)) - 1) & (P4(size_t))~(sizeof(P4(size_t)) - 1))
Osamu Nakamura 0:7cc000799c93 83 #define CMSG_SPACE(len) (CMSG_ALIGN(len) + CMSG_ALIGN(sizeof(struct P4(cmsghdr))))
Osamu Nakamura 0:7cc000799c93 84 #define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct P4(cmsghdr))) + (len))
Osamu Nakamura 0:7cc000799c93 85 #define CMSG_FIRSTHDR(mhdr) ( \
Osamu Nakamura 0:7cc000799c93 86 (P4(size_t))(mhdr)->msg_controllen >= sizeof(struct P4(cmsghdr)) \
Osamu Nakamura 0:7cc000799c93 87 ? (struct P4(cmsghdr)*)(mhdr)->msg_control : (struct P4(cmsghdr)*)0 \
Osamu Nakamura 0:7cc000799c93 88 )
Osamu Nakamura 0:7cc000799c93 89 P4_API(struct P4(cmsghdr)*, cmsg_nxthdr(struct P4(msghdr)* mhdr, struct P4(cmsghdr)* cmsg));
Osamu Nakamura 0:7cc000799c93 90 #define CMSG_NXTHDR(mhdr, cmsg) P4(cmsg_nxthdr)(mhdr, cmsg)
Osamu Nakamura 0:7cc000799c93 91 #define CMSG_DATA(cmsg) ((unsigned char*)((struct P4(cmsghdr)*)(cmsg) + 1))
Osamu Nakamura 0:7cc000799c93 92
Osamu Nakamura 0:7cc000799c93 93 POSIX_API(int, accept(int sockfd, struct P4(sockaddr)* addr, P4(socklen_t)* addrlen));
Osamu Nakamura 0:7cc000799c93 94 POSIX_API(int, bind(int sockfd, const struct P4(sockaddr)* addr, P4(socklen_t) addrlen));
Osamu Nakamura 0:7cc000799c93 95 POSIX_API(int, connect(int sockfd, const struct P4(sockaddr)* addr, P4(socklen_t) addrlen));
Osamu Nakamura 0:7cc000799c93 96 POSIX_API(void, freeaddrinfo(struct P4(addrinfo)* res));
Osamu Nakamura 0:7cc000799c93 97 POSIX_API(int, getaddrinfo(const char* node, const char* service, const struct P4(addrinfo)* hints, struct P4(addrinfo)** res));
Osamu Nakamura 0:7cc000799c93 98 POSIX_API(int, getpeername(int sockfd, struct P4(sockaddr)* addr, P4(socklen_t)* addrlen));
Osamu Nakamura 0:7cc000799c93 99 POSIX_API(int, getsockname(int sockfd, struct P4(sockaddr)* addr, P4(socklen_t)* addrlen));
Osamu Nakamura 0:7cc000799c93 100 POSIX_API(int, getsockopt(int sockfd, int level, int optname, void* optval, P4(socklen_t)* optlen));
Osamu Nakamura 0:7cc000799c93 101 POSIX_API(uint32_t, htonl(uint32_t hostlong));
Osamu Nakamura 0:7cc000799c93 102 POSIX_API(uint16_t, htons(uint16_t hostshort));
Osamu Nakamura 0:7cc000799c93 103 POSIX_API(unsigned int, if_nametoindex(const char* ifname));
Osamu Nakamura 0:7cc000799c93 104 POSIX_API(int, listen(int sockfd, int backlog));
Osamu Nakamura 0:7cc000799c93 105 POSIX_API(uint16_t, ntohs(uint16_t netshort));
Osamu Nakamura 0:7cc000799c93 106 POSIX_API(P4(ssize_t), recvmsg(int sockfd, struct P4(msghdr)* msg, int flags));
Osamu Nakamura 0:7cc000799c93 107 POSIX_API(P4(ssize_t), sendmsg(int sockfd, const struct P4(msghdr)* msg, int flags));
Osamu Nakamura 0:7cc000799c93 108 POSIX_API(int, setsockopt(int sockfd, int level, int optname, const void* optval, P4(socklen_t) optlen));
Osamu Nakamura 0:7cc000799c93 109 POSIX_API(int, shutdown(int sockfd, int how));
Osamu Nakamura 0:7cc000799c93 110 POSIX_API(int, socket(int domain, int type, int protocol));
Osamu Nakamura 0:7cc000799c93 111
Osamu Nakamura 0:7cc000799c93 112 POSIX_API(int, nanosleep(const struct P4(timespec)* req, struct P4(timespec)* rem));
Osamu Nakamura 0:7cc000799c93 113 POSIX_API(int, pipe(int pipefd[2]));
Osamu Nakamura 0:7cc000799c93 114 POSIX_API(long, sysconf(int name));
Osamu Nakamura 0:7cc000799c93 115
Osamu Nakamura 0:7cc000799c93 116 LINUX_API(P4(ssize_t), preadv(int fd, const struct P4(iovec)* iov, int iovcnt, P4(off_t) offset));
Osamu Nakamura 0:7cc000799c93 117 LINUX_API(P4(ssize_t), pwritev(int fd, const struct P4(iovec)* iov, int iovcnt, P4(off_t) offset));
Osamu Nakamura 0:7cc000799c93 118
Osamu Nakamura 0:7cc000799c93 119 LINUX_API(int, epoll_create(int size));
Osamu Nakamura 0:7cc000799c93 120 LINUX_API(int, epoll_create1(int flags));
Osamu Nakamura 0:7cc000799c93 121 LINUX_API(int, epoll_ctl(int epfd, int op, int fd, struct P4(poll_event)* event));
Osamu Nakamura 0:7cc000799c93 122 LINUX_API(int, epoll_pwait(int epfd, struct P4(poll_event)* events, int maxevents, int timeout, const P4(sigset_t)* sigmask));
Osamu Nakamura 0:7cc000799c93 123 LINUX_API(int, epoll_wait(int epfd, struct P4(poll_event)* events, int maxevents, int timeout));
Osamu Nakamura 0:7cc000799c93 124 LINUX_API(int, eventfd(unsigned int initval, int flags));
Osamu Nakamura 0:7cc000799c93 125 LINUX_API(int, eventfd2(unsigned int initval, int flags));
Osamu Nakamura 0:7cc000799c93 126
Osamu Nakamura 0:7cc000799c93 127 LINUX_API(int, accept4(int fd, struct P4(sockaddr)* addr, P4(socklen_t)* addr_len, int flags));
Osamu Nakamura 0:7cc000799c93 128 LINUX_API(int, socketcall(int call, unsigned long* args));
Osamu Nakamura 0:7cc000799c93 129
Osamu Nakamura 0:7cc000799c93 130 LINUX_API(int, ioctl(int fd, unsigned long request, ...));
Osamu Nakamura 0:7cc000799c93 131 LINUX_API(long, syscall(long number, ...));
Osamu Nakamura 0:7cc000799c93 132 LINUX_API(int, pipe2(int pipefd[2], int flags));
Osamu Nakamura 0:7cc000799c93 133
Osamu Nakamura 0:7cc000799c93 134 LINUX_API(void*, dlopen(const char* filename, int flag));
Osamu Nakamura 0:7cc000799c93 135 LINUX_API(void*, dlsym(void* handle, char* symbol));
Osamu Nakamura 0:7cc000799c93 136 LINUX_API(int, dlclose(void* handle));
Osamu Nakamura 0:7cc000799c93 137
Osamu Nakamura 0:7cc000799c93 138 LINUX_API(char**, backtrace_symbols(void*const* buffer, int size));
Osamu Nakamura 0:7cc000799c93 139 LINUX_API(int, backtrace(void** buffer, int size));
Osamu Nakamura 0:7cc000799c93 140
Osamu Nakamura 0:7cc000799c93 141 OVRDN_API(void, abort(void));
Osamu Nakamura 0:7cc000799c93 142 OVRDN_API(int, gettimeofday(struct timeval* tv, void* tz));
Osamu Nakamura 0:7cc000799c93 143 OVRDN_API(P4(ssize_t), read(int fd, void* buf, P4(size_t) count));
Osamu Nakamura 0:7cc000799c93 144 OVRDN_API(P4(ssize_t), write(int fd, const void* buf, P4(size_t) count));
Osamu Nakamura 0:7cc000799c93 145 OVRDN_API(int, open(const char* pathname, ...));
Osamu Nakamura 0:7cc000799c93 146 OVRDN_API(int, close(int fd));
Osamu Nakamura 0:7cc000799c93 147 OVRDN_API(int, unlink(const char* pathname));
Osamu Nakamura 0:7cc000799c93 148 OVRDN_API(int, mkdir(const char* pathname, P4(mode_t) mode));
Osamu Nakamura 0:7cc000799c93 149 OVRDN_API(int, rmdir(const char* pathname));
Osamu Nakamura 0:7cc000799c93 150 OVRDN_API(int, stat(const char* pathname, P4(stat_t)* buf));
Osamu Nakamura 0:7cc000799c93 151 OVRDN_API(int, fstat(int fd, P4(stat_t)* buf));
Osamu Nakamura 0:7cc000799c93 152
Osamu Nakamura 0:7cc000799c93 153 NIC_API(char*, nic_enumerate(void));
Osamu Nakamura 0:7cc000799c93 154 NIC_API(int, nic_ifup(const char* nic, const char* params));
Osamu Nakamura 0:7cc000799c93 155 NIC_API(int, nic_ifdown(const char* nic));
Osamu Nakamura 0:7cc000799c93 156 NIC_API(char*, nic_ifconfig(const char* nic));
Osamu Nakamura 0:7cc000799c93 157 NIC_API(int, nic_ntpdate(const char* nic, const char* server, int port, int timeout));
Osamu Nakamura 0:7cc000799c93 158
Osamu Nakamura 0:7cc000799c93 159 #undef NIC_API
Osamu Nakamura 0:7cc000799c93 160 #undef OVRDN_API
Osamu Nakamura 0:7cc000799c93 161 #undef LINUX_API
Osamu Nakamura 0:7cc000799c93 162 #undef POSIX_API
Osamu Nakamura 0:7cc000799c93 163
Osamu Nakamura 0:7cc000799c93 164 #if !defined( POSIX4_ITSELF )
Osamu Nakamura 0:7cc000799c93 165
Osamu Nakamura 0:7cc000799c93 166 // functions
Osamu Nakamura 0:7cc000799c93 167 #define getcwd P4(getcwd)
Osamu Nakamura 0:7cc000799c93 168 #define chdir P4(chdir)
Osamu Nakamura 0:7cc000799c93 169 #define fdatasync P4(fdatasync)
Osamu Nakamura 0:7cc000799c93 170 #define fsync P4(fsync)
Osamu Nakamura 0:7cc000799c93 171 #define ftruncate P4(ftruncate)
Osamu Nakamura 0:7cc000799c93 172 #define scandir P4(scandir)
Osamu Nakamura 0:7cc000799c93 173 #define utime P4(utime)
Osamu Nakamura 0:7cc000799c93 174 #define utimes P4(utimes)
Osamu Nakamura 0:7cc000799c93 175 #define pread P4(pread)
Osamu Nakamura 0:7cc000799c93 176 #define pwrite P4(pwrite)
Osamu Nakamura 0:7cc000799c93 177 #define readv P4(readv)
Osamu Nakamura 0:7cc000799c93 178 #define writev P4(writev)
Osamu Nakamura 0:7cc000799c93 179 #define utimensat P4(utimensat)
Osamu Nakamura 0:7cc000799c93 180
Osamu Nakamura 0:7cc000799c93 181 #define clock_getres P4(clock_getres)
Osamu Nakamura 0:7cc000799c93 182 #define clock_gettime P4(clock_gettime)
Osamu Nakamura 0:7cc000799c93 183
Osamu Nakamura 0:7cc000799c93 184 #define pthread_create P4(pthread_create)
Osamu Nakamura 0:7cc000799c93 185 #define pthread_join P4(pthread_join)
Osamu Nakamura 0:7cc000799c93 186 #define pthread_once P4(pthread_once)
Osamu Nakamura 0:7cc000799c93 187 #define pthread_sigmask P4(pthread_sigmask)
Osamu Nakamura 0:7cc000799c93 188 #define pthread_attr_destroy P4(pthread_attr_destroy)
Osamu Nakamura 0:7cc000799c93 189 #define pthread_cond_destroy P4(pthread_cond_destroy)
Osamu Nakamura 0:7cc000799c93 190 #define pthread_cond_init P4(pthread_cond_init)
Osamu Nakamura 0:7cc000799c93 191 #define pthread_cond_signal P4(pthread_cond_signal)
Osamu Nakamura 0:7cc000799c93 192 #define pthread_cond_wait P4(pthread_cond_wait)
Osamu Nakamura 0:7cc000799c93 193 #define pthread_condattr_destroy P4(pthread_condattr_destroy)
Osamu Nakamura 0:7cc000799c93 194 #define pthread_condattr_init P4(pthread_condattr_init)
Osamu Nakamura 0:7cc000799c93 195 #define pthread_condattr_setclock P4(pthread_condattr_setclock)
Osamu Nakamura 0:7cc000799c93 196 #define pthread_mutex_destroy P4(pthread_mutex_destroy)
Osamu Nakamura 0:7cc000799c93 197 #define pthread_mutex_init P4(pthread_mutex_init)
Osamu Nakamura 0:7cc000799c93 198 #define pthread_mutex_lock P4(pthread_mutex_lock)
Osamu Nakamura 0:7cc000799c93 199 #define pthread_mutex_unlock P4(pthread_mutex_unlock)
Osamu Nakamura 0:7cc000799c93 200 #define pthread_rwlock_destroy P4(pthread_rwlock_destroy)
Osamu Nakamura 0:7cc000799c93 201 #define pthread_rwlock_init P4(pthread_rwlock_init)
Osamu Nakamura 0:7cc000799c93 202 #define pthread_rwlock_rdlock P4(pthread_rwlock_rdlock)
Osamu Nakamura 0:7cc000799c93 203 #define pthread_rwlock_unlock P4(pthread_rwlock_unlock)
Osamu Nakamura 0:7cc000799c93 204 #define pthread_cond_broadcast P4(pthread_cond_broadcast)
Osamu Nakamura 0:7cc000799c93 205 #define pthread_cond_timedwait P4(pthread_cond_timedwait)
Osamu Nakamura 0:7cc000799c93 206 #define pthread_self P4(pthread_self)
Osamu Nakamura 0:7cc000799c93 207 #define pthread_equal P4(pthread_equal)
Osamu Nakamura 0:7cc000799c93 208 #define pthread_mutex_trylock P4(pthread_mutex_trylock)
Osamu Nakamura 0:7cc000799c93 209 #define pthread_rwlock_tryrdlock P4(pthread_rwlock_tryrdlock)
Osamu Nakamura 0:7cc000799c93 210 #define pthread_rwlock_trywrlock P4(pthread_rwlock_trywrlock)
Osamu Nakamura 0:7cc000799c93 211 #define pthread_rwlock_wrlock P4(pthread_rwlock_wrlock)
Osamu Nakamura 0:7cc000799c93 212 #define sem_init P4(sem_init)
Osamu Nakamura 0:7cc000799c93 213 #define sem_destroy P4(sem_destroy)
Osamu Nakamura 0:7cc000799c93 214 #define sem_wait P4(sem_wait)
Osamu Nakamura 0:7cc000799c93 215 #define sem_trywait P4(sem_trywait)
Osamu Nakamura 0:7cc000799c93 216 #define sem_post P4(sem_post)
Osamu Nakamura 0:7cc000799c93 217
Osamu Nakamura 0:7cc000799c93 218 #define accept P4(accept)
Osamu Nakamura 0:7cc000799c93 219 #define bind P4(bind)
Osamu Nakamura 0:7cc000799c93 220 #define connect P4(connect)
Osamu Nakamura 0:7cc000799c93 221 #define freeaddrinfo P4(freeaddrinfo)
Osamu Nakamura 0:7cc000799c93 222 #define getaddrinfo P4(getaddrinfo)
Osamu Nakamura 0:7cc000799c93 223 #define getpeername P4(getpeername)
Osamu Nakamura 0:7cc000799c93 224 #define getsockname P4(getsockname)
Osamu Nakamura 0:7cc000799c93 225 #define getsockopt P4(getsockopt)
Osamu Nakamura 0:7cc000799c93 226 #define htonl P4(htonl)
Osamu Nakamura 0:7cc000799c93 227 #define htons P4(htons)
Osamu Nakamura 0:7cc000799c93 228 #define if_nametoindex P4(if_nametoindex)
Osamu Nakamura 0:7cc000799c93 229 #define listen P4(listen)
Osamu Nakamura 0:7cc000799c93 230 #define ntohs P4(ntohs)
Osamu Nakamura 0:7cc000799c93 231 #define recvmsg P4(recvmsg)
Osamu Nakamura 0:7cc000799c93 232 #define sendmsg P4(sendmsg)
Osamu Nakamura 0:7cc000799c93 233 #define setsockopt P4(setsockopt)
Osamu Nakamura 0:7cc000799c93 234 #define shutdown P4(shutdown)
Osamu Nakamura 0:7cc000799c93 235 #define socket(d,t,p) P4(socket)(d, t, p)
Osamu Nakamura 0:7cc000799c93 236
Osamu Nakamura 0:7cc000799c93 237 #define nanosleep P4(nanosleep)
Osamu Nakamura 0:7cc000799c93 238 #define pipe P4(pipe)
Osamu Nakamura 0:7cc000799c93 239 #define sysconf P4(sysconf)
Osamu Nakamura 0:7cc000799c93 240
Osamu Nakamura 0:7cc000799c93 241 #define preadv P4(preadv)
Osamu Nakamura 0:7cc000799c93 242 #define pwritev P4(pwritev)
Osamu Nakamura 0:7cc000799c93 243
Osamu Nakamura 0:7cc000799c93 244 #define epoll_create P4(epoll_create)
Osamu Nakamura 0:7cc000799c93 245 #define epoll_create1 P4(epoll_create1)
Osamu Nakamura 0:7cc000799c93 246 #define epoll_ctl P4(epoll_ctl)
Osamu Nakamura 0:7cc000799c93 247 #define epoll_pwait P4(epoll_pwait)
Osamu Nakamura 0:7cc000799c93 248 #define epoll_wait P4(epoll_wait)
Osamu Nakamura 0:7cc000799c93 249 #define eventfd P4(eventfd)
Osamu Nakamura 0:7cc000799c93 250 #define eventfd2 P4(eventfd2)
Osamu Nakamura 0:7cc000799c93 251
Osamu Nakamura 0:7cc000799c93 252 #define accept4 P4(accept4)
Osamu Nakamura 0:7cc000799c93 253 #define socketcall P4(socketcall)
Osamu Nakamura 0:7cc000799c93 254
Osamu Nakamura 0:7cc000799c93 255 #define ioctl P4(ioctl)
Osamu Nakamura 0:7cc000799c93 256 #define syscall(n, ...) P4(syscall)(n, __VA_ARGS__)
Osamu Nakamura 0:7cc000799c93 257 #define pipe2 P4(pipe2)
Osamu Nakamura 0:7cc000799c93 258
Osamu Nakamura 0:7cc000799c93 259 #define dlopen P4(dlopen)
Osamu Nakamura 0:7cc000799c93 260 #define dlsym P4(dlsym)
Osamu Nakamura 0:7cc000799c93 261 #define dlclose P4(dlclose)
Osamu Nakamura 0:7cc000799c93 262
Osamu Nakamura 0:7cc000799c93 263 #define backtrace_symbols P4(backtrace_symbols)
Osamu Nakamura 0:7cc000799c93 264 #define backtrace P4(backtrace)
Osamu Nakamura 0:7cc000799c93 265
Osamu Nakamura 0:7cc000799c93 266 #define abort P4(abort)
Osamu Nakamura 0:7cc000799c93 267 #define gettimeofday(tv,tz) P4(gettimeofday)(tv, tz)
Osamu Nakamura 0:7cc000799c93 268 #define read(fd,buf,count) P4(read)(fd, buf, count)
Osamu Nakamura 0:7cc000799c93 269 #define write(fd,buf,count) P4(write)(fd, buf, count)
Osamu Nakamura 0:7cc000799c93 270 #define open(pathname, ...) P4(open)(pathname, __VA_ARGS__)
Osamu Nakamura 0:7cc000799c93 271 #define close(fd) P4(close)(fd)
Osamu Nakamura 0:7cc000799c93 272 #define unlink(pathname) P4(unlink)(pathname)
Osamu Nakamura 0:7cc000799c93 273 #define mkdir(pathname,mode) P4(mkdir)(pathname,mode)
Osamu Nakamura 0:7cc000799c93 274 #define rmdir(pathname) P4(rmdir)(pathname)
Osamu Nakamura 0:7cc000799c93 275 #define stat(pathname,buf) P4(stat)(pathname, buf)
Osamu Nakamura 0:7cc000799c93 276 #define fstat(fd,buf) P4(fstat)(fd, buf)
Osamu Nakamura 0:7cc000799c93 277
Osamu Nakamura 0:7cc000799c93 278 #define nic_enumerate P4(nic_enumerate)
Osamu Nakamura 0:7cc000799c93 279 #define nic_ifup P4(nic_ifup)
Osamu Nakamura 0:7cc000799c93 280 #define nic_ifdown P4(nic_ifdown)
Osamu Nakamura 0:7cc000799c93 281 #define nic_ifconfig P4(nic_ifconfig)
Osamu Nakamura 0:7cc000799c93 282 #define nic_ntpdate P4(nic_ntpdate)
Osamu Nakamura 0:7cc000799c93 283
Osamu Nakamura 0:7cc000799c93 284 // structs
Osamu Nakamura 0:7cc000799c93 285 #define addrinfo P4(addrinfo)
Osamu Nakamura 0:7cc000799c93 286 #define cmsghdr P4(cmsghdr)
Osamu Nakamura 0:7cc000799c93 287 #define dirent P4(dirent)
Osamu Nakamura 0:7cc000799c93 288 #define in_addr P4(in_addr)
Osamu Nakamura 0:7cc000799c93 289 #define in6_addr P4(in6_addr)
Osamu Nakamura 0:7cc000799c93 290 #define iovec P4(iovec)
Osamu Nakamura 0:7cc000799c93 291 #define msghdr P4(msghdr)
Osamu Nakamura 0:7cc000799c93 292 #define poll_event P4(poll_event)
Osamu Nakamura 0:7cc000799c93 293 #define sockaddr P4(sockaddr)
Osamu Nakamura 0:7cc000799c93 294 #define sockaddr_in P4(sockaddr_in)
Osamu Nakamura 0:7cc000799c93 295 #define sockaddr_in6 P4(sockaddr_in6)
Osamu Nakamura 0:7cc000799c93 296 #define sockaddr_storage P4(sockaddr_storage)
Osamu Nakamura 0:7cc000799c93 297 #define termios P4(termios)
Osamu Nakamura 0:7cc000799c93 298 #define timespec P4(timespec)
Osamu Nakamura 0:7cc000799c93 299 #define timeval P4(timeval)
Osamu Nakamura 0:7cc000799c93 300 #define utimbuf P4(utimbuf)
Osamu Nakamura 0:7cc000799c93 301
Osamu Nakamura 0:7cc000799c93 302 // typedefs
Osamu Nakamura 0:7cc000799c93 303 #define clockid_t P4(clockid_t)
Osamu Nakamura 0:7cc000799c93 304 #define ip_mreq P4(ip_mreq)
Osamu Nakamura 0:7cc000799c93 305 #define ipv6_mreq P4(ipv6_mreq)
Osamu Nakamura 0:7cc000799c93 306 #define in_addr_t P4(in_addr_t)
Osamu Nakamura 0:7cc000799c93 307 #define in_port_t P4(in_port_t)
Osamu Nakamura 0:7cc000799c93 308 #define off_t P4(off_t)
Osamu Nakamura 0:7cc000799c93 309 #define pthread_attr_t P4(pthread_attr_t)
Osamu Nakamura 0:7cc000799c93 310 #define pthread_cond_t P4(pthread_cond_t)
Osamu Nakamura 0:7cc000799c93 311 #define pthread_condattr_t P4(pthread_condattr_t)
Osamu Nakamura 0:7cc000799c93 312 #define pthread_key_t P4(pthread_key_t)
Osamu Nakamura 0:7cc000799c93 313 #define pthread_mutex_t P4(pthread_mutex_t)
Osamu Nakamura 0:7cc000799c93 314 #define pthread_mutexattr_t P4(pthread_mutexattr_t)
Osamu Nakamura 0:7cc000799c93 315 #define pthread_once_t P4(pthread_once_t)
Osamu Nakamura 0:7cc000799c93 316 #define pthread_rwlock_t P4(pthread_rwlock_t)
Osamu Nakamura 0:7cc000799c93 317 #define pthread_rwlockattr_t P4(pthread_rwlockattr_t)
Osamu Nakamura 0:7cc000799c93 318 #define pthread_t P4(pthread_t)
Osamu Nakamura 0:7cc000799c93 319 #define sa_family_t P4(sa_family_t)
Osamu Nakamura 0:7cc000799c93 320 #define sem_t P4(sem_t)
Osamu Nakamura 0:7cc000799c93 321 #define sigset_t P4(sigset_t)
Osamu Nakamura 0:7cc000799c93 322 #define size_t P4(size_t)
Osamu Nakamura 0:7cc000799c93 323 #define socklen_t P4(socklen_t)
Osamu Nakamura 0:7cc000799c93 324 #define ssize_t P4(ssize_t)
Osamu Nakamura 0:7cc000799c93 325 #define stat_t P4(stat_t)
Osamu Nakamura 0:7cc000799c93 326
Osamu Nakamura 0:7cc000799c93 327 #endif // #if !defined( POSIX4_ITSELF )
Osamu Nakamura 0:7cc000799c93 328
Osamu Nakamura 0:7cc000799c93 329 #ifdef __cplusplus
Osamu Nakamura 0:7cc000799c93 330 }
Osamu Nakamura 0:7cc000799c93 331 #endif
Osamu Nakamura 0:7cc000799c93 332
Osamu Nakamura 0:7cc000799c93 333 #endif // #ifndef POSIX4_INCL