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]
Package | Version |
build-essential | 12.1ubuntu2 |
gyp | 0.1+20150913git1f374df9-1ubuntu1 |
mercurial | 3.7.3-1ubuntu1 |
cmake | 3.5.1-1ubuntu3 |
git | 1:2.7.4-0ubuntu1.4 |
python2.7 | 2.7.12-1ubuntu016.04.3 |
valgrind | 1:3.11.0-1ubuntu4.2 |
python-pip | 8.1.1-2ubuntu0.4 |
2. 以下のコマンドを実行してMbed OS用ビルドツール mbed CLIをインストールします。
$ sudo -H pip install mbed-cli
3. GNU Arm Embedded Toolchainをインストールします。
- 下記URLからLinux用パッケージ (gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2) をダウンロードしてください。
https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2?revision=2cc92fb5-3e0e-402d-9197-bdfc8224d8a5?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,6-2017-q2-update
- ダウンロードしたファイルを任意のディレクトリに展開します。
(以下、展開先を${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』と接続します。
シリアルポートは下記設定としてください。
Baud rate | 115200 | |||
Data | 8 bit | |||
Parity | none | |||
Stop | 1 bit | |||
Flow control | none |
5. 正常に書込みが終了したらGR-PEACHのRESETボタンを押下します。
6. ターミナルS/W上に下記メッセージが表示されます。
7. Enterキーを押下してコード入力モードに移行します。
8. 実行するJavascriptコードをターミナルソフトウェアに貼り付けてEnterキーを押下すると、実行開始します。Javascriptコード例については、test/case.txtを参照ください。
src/iotjs/deps/posix/posix4.h@0:7cc000799c93, 2019-07-11 (annotated)
- 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?
User | Revision | Line number | New 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 |