こちらから - インタフェース
こちらから - インタフェース
こちらから - インタフェース
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
IFHNL(PCI/C-PCI)<br />
GPG-8826<br />
光 メモリンク<strong>インタフェース</strong>モジュール 用 Linux ドライバ<br />
Help for Linux<br />
www.interface.co.jp
GPG-8826 Help for Linux<br />
目 次<br />
第 1 章 はじめに 3<br />
1.1 概 要 ...........................................................................3<br />
1.2 特 長 ...........................................................................3<br />
1.3 用 語 解 説 .......................................................................4<br />
1.4 共 有 メモリとは .................................................................4<br />
1.5 ウィンドウとは .................................................................9<br />
1.6 「PCI Express Native」 環 境 でご 使 用 の 方 へ ......................................11<br />
第 2 章 製 品 仕 様 12<br />
2.1 動 作 環 境 ......................................................................12<br />
2.2 基 本 仕 様 ......................................................................13<br />
第 3 章 実 行 手 順 14<br />
3.1 デバイスを 動 かすまで ..........................................................14<br />
3.2 制 御 手 順 ......................................................................19<br />
3.3 メモリ 共 有 できない 接 続 方 法 ....................................................22<br />
3.4 <strong>インタフェース</strong>モジュールのスレーブからマスタへの 切 替 方 法 ......................22<br />
第 4 章 リファレンス 23<br />
4.1 関 数 一 覧 ......................................................................23<br />
4.2 関 数 個 別 説 明 ..................................................................24<br />
4.3 イベントについて ..............................................................41<br />
4.4 構 造 体 説 明 ....................................................................42<br />
4.5 戻 り 値 一 覧 ....................................................................44<br />
第 5 章 サンプルプログラム 45<br />
5.1 WriteFile .....................................................................45<br />
5.2 ReadFile ......................................................................46<br />
5.3 SIMD 拡 張 命 令 を 利 用 したデータ 転 送 ..............................................47<br />
第 6 章 ユーティリティ 48<br />
6.1 設 定 ユーティリティ(IFHNLSet) ..................................................48<br />
第 7 章 重 要 な 情 報 54<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
2
GPG-8826 Help for Linux<br />
第 1 章 はじめに<br />
1.1 概 要<br />
本 ソフトウェアは、Linux アプリケーションから、 弊 社 製 品 の 制 御 を 行 うためのソフトウェア<br />
です。GPG-8826 は、 弊 社 光 メモリンク 製 品 を Linux アプリケーションから Lib をリンクし 関 数 を<br />
コールすることにより 制 御 します。<br />
本 ドキュメントは、Linux 上 で GPG-8826 を 使 用 するための 情 報 を 掲 載 しています。<br />
1.2 特 長<br />
● 通 常 のメモリアクセス 処 理 と 同 等 の 処 理 で 共 有 メモリへのアクセス 処 理 ができます。<br />
その 使 い 方 もメモリアクセス 処 理 と 同 等 の 処 理 でできます。<br />
● ファイル 形 式 でのメモリ 共 有 による 入 出 力 による 割 り 込 み 要 求 、イベント 取 得 を 行 うサンプル<br />
プログラムを 付 属 しています。<br />
ソースを 公 開 していますので、 自 由 にプログラムを 拡 張 することができます。<br />
● 光 メモリンクネットワーク 上 でメモリ 共 有 するための 設 定 ユーティリティを 準 備 しています。<br />
デバイスの 状 態 を 表 示 して 設 定 を 簡 単 に 行 うことができます。<br />
● 画 面 上 で 機 能 や 使 い 方 を 説 明 する Help をサポートしていますので、 開 発 中 に 関 数 の 詳 細 説 明<br />
など、 簡 単 に 参 照 することができます。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
3
GPG-8826 Help for Linux<br />
1.3 用 語 解 説<br />
用 語<br />
説 明<br />
マスタデバイス<br />
光 メモリンクのマスタとして 設 定 を 行 ったデバイス<br />
スレーブデバイス<br />
光 メモリンクのスレーブとして 設 定 を 行 ったデバイス<br />
光 メモリンクネットワーク 光 メモリンクのネットワークのこと。 一 つのマスタコンピュータに 対<br />
して 構 成 されているネットワーク。<br />
ノード 光 メモリンクネットワークの 要 素 。<br />
マスタデバイスとスレーブデバイスで 一 つのノードを 構 成 します。<br />
共 有 メモリ<br />
共 有 メモリとはコンピュータに 搭 載 されているRAMを 光 メモリンク 用 に 確<br />
保 したメモリ。 詳 しくは「1.4 共 有 メモリとは」を 参 照 してください。<br />
マスタコンピュータ マスタデバイスを 搭 載 したコンピュータ<br />
スレーブコンピュータ スレーブデバイスを 搭 載 したコンピュータ<br />
Virtual ウィンドウ スレーブからマスタにアクセスするためのウィンドウ<br />
詳 しくは「1.5 ウィンドウとは」を 参 照 してください。<br />
Link ウィンドウ<br />
マスタからスレーブにアクセスするためのウィンドウ<br />
詳 しくは「1.5 ウィンドウとは」を 参 照 してください。<br />
1.4 共 有 メモリとは<br />
共 有 メモリとはコンピュータに 搭 載 されている RAM を 光 メモリンク 用 に 確 保 したメモリです。<br />
確 保 の 際 、OS が 使 用 する RAM 容 量 を 制 限 します。<br />
RAM 容 量 を 制 限 するため、 下 記 のように Linux の 起 動 時 に、コマンド 行 オプションを 渡 します。<br />
設 定 ユーティリティにてご 使 用 のコンピュータに 搭 載 されている RAM の 容 量 , 確 保 したいメモリのサ<br />
イズを 入 力 し、 設 定 を 行 うと 共 に、コマンドオプションに 渡 す 値 を 取 得 してください。<br />
例 )Debian 5.0 での 例<br />
設 定 ユーティリティで 取 得 した 値 が、510 だった 場 合 、『mem=510M』を 指 定 します。<br />
Kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet mem=510M<br />
※ 設 定 した 値 、ご 使 用 される 環 境 により、Linuxが 起 動 できなくなる、フリーズやカーネルパニック<br />
といった 予 期 しない 動 作 が 発 生 することがあります。<br />
共 有 メモリとして 使 用 可 能 なメモリ 領 域 については「1.4.2 共 有 メモリとして 使 用 可 能 なメモリ 領<br />
域 について」を 参 照 してください。<br />
※ 本 設 定 以 外 で RAM 容 量 を 制 限 し、 使 用 されている 場 合 、 使 用 する RAM が 競 合 する 可 能 性 があります。<br />
再 起 動 後 、 手 動 での 指 定 を 行 わずに 制 限 を 掛 けた 状 態 で 使 用 する 場 合 にはブートローダの 編 集 を<br />
行 ってください。 編 集 方 法 については 使 用 されているブートローダの 説 明 をご 覧 下 さい。<br />
RAM の 増 設 などの 理 由 で 後 から 同 オプションを 変 更 したい 場 合 は、 下 記 の 手 順 で<br />
変 更 を 行 ってください。<br />
下 記 の 手 順 をとらず 変 更 した 場 合 は、 本 ソフトウェアの 正 常 動 作 は 保 証 いたしかねます。<br />
1. 設 定 ユーティリティ(IFHNLSet)にてデバイスのリフレッシュ、 共 有 メモリのリフレッシュをする。<br />
※ブートローダの 編 集 を 行 った 場 合 、 元 に 戻 してください。<br />
2. 設 定 ユーティリティ(IFHNLSet)にて 再 度 設 定 をする。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
4
GPG-8826 Help for Linux<br />
1.4.1 復 旧 方 法<br />
共 有 メモリの 設 定 を 行 ったことにより、OS が 動 作 しなくなった 場 合 の 復 旧 方 法 について 説 明 します。<br />
OS が 動 作 しなくなった 場 合 には、 下 記 の 方 法 を 実 行 し、OS の 使 用 可 能 な RAM 容 量 の 制 限 を 解 除 して<br />
ください。<br />
1.Linux の 起 動 時 に、コマンド 行 オプションを 編 集 し、Linux を 起 動 してください。<br />
例 )Debian 5.0 での 例<br />
Kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet mem=○○M<br />
「mem=○○M」を 削 除 し、Linux を 起 動 させてください。(○○は OS の 使 用 可 能 な RAM 容 量 が 入 っています。)<br />
2. 起 動 後 、ブートローダの 編 集 を 行 い、 制 限 を 解 除 してください。<br />
編 集 方 法 については 使 用 されているブートローダの 説 明 をご 覧 下 さい。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
5
GPG-8826 Help for Linux<br />
1.4.2 共 有 メモリとして 使 用 可 能 なメモリ 領 域 について<br />
共 有 メモリはPCに 搭 載 されているRAMの 領 域 を 使 用 します。<br />
そのため、 共 有 メモリとして 使 用 する 領 域 がシステムの 使 用 する 領 域 と 重 複 してしまった 場 合 、コン<br />
ピュータが 起 動 しなくなる、フリーズやカーネルパニックといった 予 期 しない 動 作 が 発 生 する 恐 れが<br />
あります。<br />
上 記 状 態 を 回 避 するため、 共 有 メモリサイズ 設 定 時 、 共 有 メモリへのアクセス 時 にはシステムやOS<br />
によって 使 用 されていない 領 域 を 確 認 し、 設 定 、アクセスを 行 う 必 要 があります。<br />
下 記 の 情 報 を 確 認 することで、 共 有 メモリとして 使 用 可 能 なメモリ 領 域 を 確 認 します。<br />
・BIOSが 割 当 てた 物 理 メモリのマップ 情 報<br />
BIOSによって 割 当 てられたメモリの 配 置 を 確 認 します。<br />
この 情 報 から、システムに 使 用 されていない 領 域 を 確 認 します。<br />
・ 物 理 メモリマップ 情 報<br />
物 理 メモリが 何 に 割 当 てられているかを 確 認 します。<br />
この 情 報 から、OSが 使 用 している 領 域 を 確 認 します。<br />
安 全 に 使 用 することのできるメモリ 領 域 の 確 認 手 順 を 以 下 に 記 載 いたします。<br />
※ 本 説 明 では 下 記 、 弊 社 環 境 での 例 を 元 にし、 確 認 方 法 について 記 載 しております。<br />
・ディストリビューション:Debian 5.0 (32bit)<br />
・ 搭 載 メモリ:1024MB<br />
ご 使 用 の 環 境 が 異 なる 場 合 、ログやファイルのフォーマットや 確 認 方 法 が 異 なる 場 合 があります。<br />
各 情 報 の 確 認 方 法 についてはご 使 用 のコンピュータまたはディストリビューションの 仕 様 をご 確<br />
認 下 さい。<br />
1. 「/var/log/message」のファイルを 参 照 していただき、「BIOS-provided physical RAM map」の<br />
文 字 列 を 見 つけます。<br />
kernel: [0.000000] BIOS-provided physical RAM map:<br />
kernel: [0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable)<br />
kernel: [0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 0000000000100000 - 000000003eee0000 (usable)<br />
kernel: [0.000000] BIOS-e820: 000000003eee0000 - 000000003eeea000 (ACPI data)<br />
kernel: [0.000000] BIOS-e820: 000000003eeea000 - 000000003ef00000 (ACPI NVS)<br />
kernel: [0.000000] BIOS-e820: 000000003ef00000 - 0000000040000000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000fec10000 - 00000000fec20000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
6
GPG-8826 Help for Linux<br />
2. 「BIOS-provided physical RAM map」の 文 字 列 以 下 の「BIOS-e820:」で 始 まるログの 最 後 が「(usable)」<br />
となっているメモリ 領 域 を 確 認 します。<br />
「(usable)」となっていないメモリ 領 域 はシステムが 使 用 する 領 域 となります。<br />
「(usable)」となっているメモリ 領 域 はシステムが 使 用 しない 領 域 でOS、または 光 メモリンクの<br />
共 有 メモリとして 使 用 することのできる 領 域 です。<br />
kernel: [0.000000] BIOS-provided physical RAM map:<br />
kernel: [0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable)<br />
kernel: [0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 0000000000100000 - 000000003eee0000 (usable)<br />
kernel: [0.000000] BIOS-e820: 000000003eee0000 - 000000003eeea000 (ACPI data)<br />
kernel: [0.000000] BIOS-e820: 000000003eeea000 - 000000003ef00000 (ACPI NVS)<br />
kernel: [0.000000] BIOS-e820: 000000003ef00000 - 0000000040000000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000fec10000 - 00000000fec20000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)<br />
kernel: [0.000000] BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)<br />
3. 「/proc/iomem」ファイルを 参 照 していただき、「System RAM」とされている 領 域 を 確 認 します。<br />
※「System RAM」とされている 領 域 がOSが 使 用 している 領 域 となります。<br />
「2」、「3」の 情 報 から、 現 段 階 ではメモリ 領 域 はシステム 領 域 、OSに 全 て 使 用 されている 状 態<br />
です。<br />
00000000-0009f7ff : System RAM<br />
0009f800-0009ffff : reserved<br />
000a0000-000bffff : Video RAM area<br />
000c0000-000c7fff : Video ROM<br />
000ce000-000cffff : reserved<br />
000f0000-000fffff : System ROM<br />
00100000-3eedffff : System RAM<br />
00100000-002baba8 : Kernel code<br />
002baba9-0037661f : Kernel data<br />
003bc000-0041f57f : Kernel bss<br />
:<br />
:<br />
4. 設 定 ユーティリティで 共 有 メモリのサイズを 設 定 し、「mem=xxM」オプションを 指 定 し、OSの 使 用<br />
する 領 域 を 制 限 することで、「System RAM」とされている 領 域 を 制 限 します。<br />
※ 上 記 例 では、OSの 使 用 している 領 域 が3eedffff[h] ≒ 1006MBまでとなっているため、<br />
「mem=xxM」オプションで 指 定 する 値 は1006 未 満 に 指 定 する 必 要 があります。<br />
コンピュータに 搭 載 されている RAM を 1024MB、 確 保 する 共 有 メモリを 512MB とし 設 定 ユーティリ<br />
ティで 設 定 を 行 い、 設 定 ユーティリティでの 出 力 結 果 「mem=512M」をブートローダで 設 定 した 場<br />
合 の「/proc/iomem」ファイルの 抜 粋 を 下 記 に 記 載 します。<br />
00000000-0009f7ff : System RAM<br />
0009f800-0009ffff : reserved<br />
000a0000-000bffff : Video RAM area<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
7
GPG-8826 Help for Linux<br />
000c0000-000c7fff : Video ROM<br />
000ce000-000cffff : reserved<br />
000f0000-000fffff : System ROM<br />
00100000-1fffffff : System RAM<br />
00100000-002baba8 : Kernel code<br />
002baba9-0037661f : Kernel data<br />
003bc000-0041f57f : Kernel bss<br />
:<br />
:<br />
「mem=512M」の 指 定 でOSの 使 用 する 領 域 を512MB = 20000000[h]までに 制 限 したため、「3」の 状 態<br />
では3eedffff[h]まであったSystem RAMの 領 域 が1fffffff[h]までとなっています。<br />
5. 「2.」で 確 認 したメモリ 領 域 のうち、「4.」で 確 認 したSystem RAM 領 域 以 外 の 部 分 が 光 メモリンク<br />
の 共 有 メモリの 領 域 として 使 用 することができます。<br />
上 記 例 の 場 合 、20000000[h]~3eedffff[h]までの 領 域 を 共 有 メモリとして 使 用 することができま<br />
す。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
8
GPG-8826 Help for Linux<br />
1.5 ウィンドウとは<br />
他 コンピュータ 上 に 割 り 当 てている 共 有 メモリにアクセスを 行 うためにはウィンドウを 使 用 してそ<br />
の 領 域 にアクセスを 行 います。<br />
つまり、ウィンドウのサイズで 共 有 メモリにアクセスできる 最 大 サイズが 変 化 します。<br />
光 メモリンクには 下 記 の 2 つのウィンドウがあります。<br />
Virtual ウィンドウ スレーブコンピュータからマスタコンピュータにアクセスするためのウ<br />
ィンドウ<br />
ウィンドウの 指 定 サイズはマスタコンピュータのデバイスリソースを 取<br />
得 します。リソース 不 足 などにならないよう 注 意 してください。<br />
ウィンドウサイズの 設 定 は「6.1 設 定 ユーティリティ(IFHNLSet)」で 行<br />
います。 最 大 4 チャンネルまで 指 定 できます(※)<br />
Link ウィンドウ マスタコンピュータからスレーブコンピュータにアクセスするためのウ<br />
ィンドウ<br />
ウィンドウの 指 定 サイズ 分 はスレーブコンピュータのデバイスリソース<br />
を 取 得 します。リソース 不 足 などにならないよう 注 意 してください。<br />
ウィンドウサイズの 設 定 は「6.1 設 定 ユーティリティ(IFHNLSet)」で 行<br />
います。 最 大 4 チャンネルまで 指 定 できます(※)<br />
※ 各 ウィンドウのチャンネルは 環 境 により 下 記 のようにチャンネル 数 が 異 なります。<br />
マスタコンピュータまたはスレーブコンピュータが x64 環 境 の 場 合 : 同 時 に 2 チャンネルまで<br />
マスタコンピュータかつスレーブコンピュータが x86 環 境 の 場 合 : 同 時 に 4 チャンネルまで<br />
※Virtual ウィンドウ、Link ウィンドウの 要 求 するサイズが 大 きい 場 合 、コンピュータがメモリ<br />
リソースを 割 り 当 てられず、コンピュータが 起 動 しなくなる 可 能 性 があります。<br />
コンピュータの 構 成 などよく 理 解 した 上 で 設 定 を 行 ってください。<br />
1.5.1 各 接 続 状 態 でのウィンドウ<br />
各 接 続 状 態 でメモリ 共 有 をする 場 合 下 記 のような 構 成 になります。<br />
■マスタコンピュータ→スレーブコンピュータ 間<br />
スレーブコンピュータ<br />
マスタコンピュータ<br />
メモリ<br />
物 理 アドレス 領 域<br />
メモリ<br />
物 理 アドレス 領 域<br />
共 有 メモリ 領 域<br />
仮 想 アドレス 領 域<br />
仮 想 アドレス 領 域<br />
Link ウィンドウ<br />
マスタコンピュータからスレーブコンピュータの 共 有 メモリにアクセスする 場 合 は Link ウィン<br />
ドウを 介 してアクセスします。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
9
GPG-8826 Help for Linux<br />
■スレーブコンピュータ→マスタコンピュータ 間<br />
スレーブコンピュータ<br />
マスタコンピュータ<br />
メモリ<br />
物 理 アドレス 領 域<br />
メモリ<br />
物 理 アドレス 領 域<br />
共 有 メモリ 領 域<br />
仮 想 アドレス 領 域<br />
仮 想 アドレス 領 域<br />
Virtual ウィンドウ<br />
スレーブコンピュータからマスタコンピュータの 共 有 メモリにアクセスする 場 合 は Virtual ウィ<br />
ンドウを 介 してアクセスします。<br />
■スレーブコンピュータ1→スレーブコンピュータ2 間<br />
スレーブコンピュータ1<br />
マスタコンピュータ<br />
スレーブコンピュータ2<br />
メモリ<br />
物 理 アドレス 領 域<br />
メモリ<br />
物 理 アドレス 領 域<br />
メモリ<br />
物 理 アドレス 領 域<br />
共 有 メモリ 領 域<br />
仮 想 アドレス 領 域<br />
Virtual ウィンドウ1<br />
仮 想 アドレス 領 域<br />
Link ウィンドウ2<br />
仮 想 アドレス 領 域<br />
「スレーブコンピュータ1」から「スレーブコンピュータ2」の 共 有 メモリにアクセスする 場 合 、<br />
アクセスする「スレーブコンピュータ1」⇔「マスタコンピュータ」 間 のノードの「Virtual ウ<br />
ィンドウ1」と、 共 有 メモリのある「スレーブコンピュータ2」⇔「マスタコンピュータ」 間 の<br />
ノードの「Link ウィンドウ2」を 介 してアクセスします。<br />
このとき、マスタコンピュータから 共 有 データ 領 域 はアクセスできません。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
10
GPG-8826 Help for Linux<br />
1.6 「PCI Express Native」 環 境 でご 使 用 の 方 へ<br />
ご 使 用 のコンピュータのBIOSにおいて、「PCI Express Native Support」が 有 効 かつ、「PCI Express<br />
Native」をサポートしているディストリビューションでは、PCI-882611,CPZ-882611 を 使 用 するこ<br />
とはできません。<br />
PCI Express デバイスが、「PCI Express Native」 構 成 かどうかチェックしているディストリビュー<br />
ションでは、 光 メモリンクを「PCI Express Native」 構 成 に 設 定 する 必 要 があります。<br />
光 メモリンクを「PCI Express Native」 構 成 に 設 定 するには、「6.1 設 定 ユーティリティ(IFHNLSet)」<br />
の「PCI Express Nativeの 設 定 」が 必 要 です。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
11
GPG-8826 Help for Linux<br />
第 2 章 製 品 仕 様<br />
2.1 動 作 環 境<br />
対 応 機 種<br />
ドライバ 種 別<br />
組 み 込 み 方 式<br />
メジャー 番 号 割 り 当 て<br />
ソースコードの<br />
取 り 扱 い<br />
ビルドサポート<br />
対 応 カーネルバージョン<br />
Help<br />
弊 社 製 FA コントローラ<br />
弊 社 製 Classembly Devices®<br />
PC/AT 互 換 機<br />
キャラクタ 型 ドライバ<br />
モジュール(ダイナミックロード/アンロード)<br />
自 動 割 り 当 て<br />
ドライバモジュール 一 部 公 開<br />
ライブラリソースコード 非 公 開<br />
共 用 モジュール 公 開<br />
メイクファイル 提 供<br />
・IBM PC/AT 互 換 機<br />
カーネル 2.6.x<br />
PDF 形 式<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
12
GPG-8826 Help for Linux<br />
2.2 基 本 仕 様<br />
※4<br />
最 大 デバイス 数 16<br />
※5<br />
最 大 ノード 数 64<br />
1CPU 内 での 取 得 共 有 メモリ 容 量 1MB~ (※1)<br />
ウィンドウチャンネル 数 4 または 2 (※2) (※3)<br />
ウィンドウサイズ<br />
1MB~1GB(※1)<br />
Link ウィンドウ 合 計 最 大 サイズ 1GB(※1)<br />
Virtual ウィンドウ 合 計 最 大 サイズ 1GB(※1)<br />
シェアオープン<br />
対 応<br />
最 大 シェアオープン 数 255<br />
※1 最 大 取 得 容 量 は 環 境 に 依 存 します。<br />
※2 ウィンドウチャンネル 数 は 環 境 により 下 記 のようにチャンネル 数 が 異 なります。<br />
・マスタコンピュータまたはスレーブコンピュータが x64 環 境 の 場 合 :<br />
同 時 に 2 チャンネルまで<br />
・マスタコンピュータかつスレーブコンピュータが.x86 環 境 の 場 合 :<br />
同 時 に 4 チャンネルまで<br />
※3 ウィンドウの 割 り 当 て 先 を 変 更 できます。<br />
※4 最 大 デバイス 数 とは 1 台 のコンピュータに 取 り 付 けることができる 光 メモリンク 製 品 の 数<br />
です。<br />
※5 最 大 ノード 数 とは 同 一 光 メモリンクネットワーク 上 に 接 続 できるノードの 数 です。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
13
GPG-8826 Help for Linux<br />
第 3 章 実 行 手 順<br />
3.1 デバイスを 動 かすまで<br />
<strong>インタフェース</strong>モジュールを 拡 張 スロットに 実 装 する 前 に、 下 記 設 定 を 行 って 下 さい。<br />
・スレーブデバイスとする<strong>インタフェース</strong>モジュール:DSW1 の 4 を ON に 設 定<br />
・マスタデバイスとする<strong>インタフェース</strong>モジュール:DSW1 の 4 を OFF に 設 定<br />
3.1.1 インストール<br />
<strong>インタフェース</strong>モジュールを 拡 張 スロットに 実 装 しコンピュータを 起 動 します。<br />
インストーラを 起 動 し、Linux ドライバのインストールを 行 います。<br />
詳 しいインストール 方 法 は、Readme をご 参 照 ください。<br />
#bash install<br />
インストーラの 指 示 に 従 って、インストールを 行 ってください。<br />
3.1.2 ドライバモジュールの 組 み 込 み<br />
GPG-8826 の Linux 用 ドライバモジュールを 組 み 込 みます。<br />
インストール 先 がデフォルトの 場 合 、「/usr/src/interface/gpg8826/(アーキテクチャ 名<br />
※)/linux/drivers」ディレクトリにドライバモジュールを 組 み 込 むためのシェルスクリプトがコ<br />
ピーされます。<br />
※アーキテクチャ 名 は、i386 または x86_64 になります。<br />
シェルスクリプト「insifhnl.sh」を 実 行 し、GPG-8826 の Linux 用 ドライバモジュールを 組 み 込<br />
みます。<br />
#cd /usr/src/interface/gpgxxxx/(アーキテクチャ 名 )/linux/drivers<br />
#sh insifhnl.sh<br />
3.1.3 <strong>インタフェース</strong>モジュールの 設 定<br />
初 期 状 態 では、まずスレーブコンピュータでの 設 定 が 必 要 です。<br />
次 にスレーブコンピュータで「3.1.5 設 定 ユーティリティ」を 行 ってください。<br />
※スレーブコンピュータの 設 定 が 完 了 するまでケーブルの 接 続 を 行 わないでください。<br />
マスタデバイスは 設 定 不 要 です。<br />
※スレーブデバイスから、マスタデバイスへ 変 更 する 場 合 には、 設 定 ユーティリティ(IFHNLSet)の、<br />
「デバイスのリフレッシュ」が 必 要 です。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
14
GPG-8826 Help for Linux<br />
3.1.4 ノード 名 変 更<br />
光 メモリンクネットワーク 上 にいるノードに 対 して 任 意 の 名 前 を 指 定 することが 出 来 ます。ノー<br />
ド 名 により 光 メモリンクの 制 御 を 行 います。<br />
ドライバモジュールを 組 み 込 んだ 際 、 設 定 ファイルに 標 準 のノード 名 が 設 定 されます。ノード 名<br />
を 変 更 する 場 合 には 設 定 ファイルに 書 かれている 名 前 を 変 更 してください。<br />
設 定 ファイルは「/etc/interface/」ディレクトリに ifhnl(RSW1 の 番 号 )のファイル 名 で 保 存 され<br />
ています。<br />
例 )RSW1 の 番 号 を 3 に 設 定 した<strong>インタフェース</strong>モジュールの 場 合 、<br />
/etc/interface/ifhnl3 のファイルに 書 かれている 名 前 を 変 更 します。<br />
※ 設 定 ファイルはスレーブコンピュータにしか 存 在 しません。<br />
※ 光 メモリンクネットワーク 上 で 重 複 した 名 前 を 設 定 しないで 下 さい。<br />
指 定 できる 文 字 列 はアルファベット(a~z,A~Z), 数 字 (0~9),ハイフン(-),<br />
アンダーバー(_)です。1~16 文 字 の 中 で 設 定 してください。<br />
ファイル 名 ,ファイルのパスは 変 更 しないで 下 さい。<br />
※ 変 更 後 、ドライバモジュールを 一 度 解 除 し、 組 込 み 直 す 必 要 があります。<br />
マスタコンピュータとリンクしている 状 態 の 場 合 、マスタコンピュータのドライバモジュール<br />
も 一 度 解 除 し、 組 み 込 みなおす 必 要 があります。 下 記 手 順 で 行 ってください。<br />
※ 下 記 実 施 時 は 下 記 の 制 限 事 項 を 守 ること。<br />
・スレーブコンピュータでは 光 メモリンクのデバイスがオープンがされていないこと。<br />
・ 設 定 ユーティリティ(IfHnlSet)が 終 了 していること。<br />
・スレーブコンピュータで 光 メモリンクのデバイスオープン(IFHnlOpen 関 数 )、<br />
設 定 ユーティリティ(IfHnlSet)の 実 行 を 行 わないこと。<br />
1.スレーブコンピュータにある 設 定 ファイルを 編 集<br />
2.マスタコンピュータのドライバモジュールを 解 除<br />
3.スレーブコンピュータのドライバモジュールを 解 除<br />
4.スレーブコンピュータのドライバモジュールを 組 込 み<br />
5.マスタコンピュータのドライバモジュールを 組 込 み<br />
3.1.5 設 定 ユーティリティ<br />
設 定 ユーティリティにより、デバイス 使 用 時 の 物 理 メモリの 確 保 やウィンドウサイズの 確 保 の 設<br />
定 を 行 います。<br />
使 用 方 法 の 詳 細 は「6.1 設 定 ユーティリティ(IFHNLSet)」を 参 照 ください。<br />
必 要 であればマスタコンピュータの 共 有 メモリの 設 定 を 設 定 ユーティリティで 行 ってください。<br />
次 に「3.1.6 起 動 手 順 」を 行 ってください。<br />
※ 設 定 ユーティリティでの 設 定 を 行 わないかぎりメモリ 共 有 はできません。<br />
また、マスタデバイスはデバイスとして 認 識 しません。<br />
※コンピュータの 再 起 動 が 必 要 です。( 再 起 動 後 は 再 度 モジュールの 組 込 みが 必 要 です。)<br />
※ 設 定 ユーティリティの 実 行 にはスーパーユーザ 権 限 が 必 要 です。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
15
GPG-8826 Help for Linux<br />
3.1.6 起 動 手 順<br />
マスタコンピュータ、スレーブコンピュータ 共 に 電 源 が OFF の 状 態<br />
1.スレーブコンピュータとマスタコンピュータの 光 メモリンクを 光 ケーブルで 接 続 してください。<br />
2.スレーブコンピュータを 起 動 させてください。<br />
3.スレーブコンピュータの OS が 起 動 したことを 確 認 してください。<br />
4.スレーブコンピュータで 光 メモリンクドライバの 組 込 み<br />
5.スレーブコンピュータで 設 定 ユーティリティによる 光 メモリンクの 設 定 ( 設 定 が 必 要 な 場 合 )<br />
設 定 後 スレーブコンピュータの 再 起 動 を 行 い「2」に 戻 ります。<br />
※これ 以 降 の 作 業 時 は 下 記 の 制 限 事 項 を 守 ること。<br />
・スレーブコンピュータでは 光 メモリンクのデバイスがオープンがされていないこと。<br />
・ 設 定 ユーティリティ(IfHnlSet)が 終 了 していること。<br />
・スレーブコンピュータで 光 メモリンクのデバイスオープン(IFHnlOpen 関 数 )、<br />
設 定 ユーティリティ(IfHnlSet)の 実 行 を 行 わないこと。<br />
6.マスタコンピュータを 起 動 させてください。<br />
7.マスタコンピュータの OS が 起 動 したことを 確 認 してください。<br />
8.マスタコンピュータで 光 メモリンクドライバの 組 込 み<br />
9.マスタコンピュータで 設 定 ユーティリティによる 光 メモリンクの 設 定 ( 設 定 が 必 要 な 場 合 )<br />
Shared Memory Size の 値 以 外 を 変 更 する 場 合 は、 設 定 後 、マスタコンピュータの 電 源 OFF、ス<br />
レーブコンピュータの 電 源 OFF を 実 施 し、「1」に 戻 ります。<br />
Shared Memory Size の 値 のみ 変 更 した 場 合 は、 設 定 後 マスタコンピュータの 再 起 動 を 行 い「7」<br />
に 戻 ります。<br />
※コンピュータ 起 動 時 は 必 ずこの 手 順 で 起 動 させてください。<br />
上 記 手 順 にてマスタコンピュータ、スレーブコンピュータの 起 動 後 、<br />
光 メモリンクの 使 用 準 備 が 完 了 します。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
16
GPG-8826 Help for Linux<br />
マスタコンピュータ、スレーブコンピュータ 共 に 電 源 が ON の 状 態 ( 正 常 動 作 時 )<br />
・マスタコンピュータの 再 起 動 を 行 う 場 合<br />
1.マスタコンピュータ、スレーブコンピュータの 両 方 で 下 記 の 終 了 処 理 を 実 行<br />
・ 共 有 メモリのアンマップ(IfHnlMemoryUnmap 関 数 )の 実 行<br />
※ 共 有 メモリのマッピング(IfHnlMemoryMap 関 数 )を 行 っていた 場 合<br />
・ウィンドウメモリのアンマップ(IfHnlWindowUnmap 関 数 )の 実 行<br />
※ウィンドウメモリのマッピング(IfHnlWindowMap 関 数 )を 行 っていた 場 合<br />
・ウィンドウのクローズ(IfHnlWindowClose)の 実 行<br />
※ウィンドウのオープン(IfHnlWindowOpen 関 数 )を 行 っていた 場 合<br />
・デバイスのクローズ(IfHnlClose)の 実 行<br />
※デバイスのオープン(IfHnlOpen 関 数 )を 行 っていた 場 合<br />
※これ 以 降 の 作 業 時 は 下 記 の 制 限 事 項 を 守 ること。<br />
・スレーブコンピュータでは 光 メモリンクのデバイスがオープンされていないこと。<br />
・ 設 定 ユーティリティ(IfHnlSet)が 終 了 していること。<br />
・スレーブコンピュータで 光 メモリンクのデバイスオープン(IFHnlOpen 関 数 )、<br />
設 定 ユーティリティ(IfHnlSet)の 実 行 を 行 わないこと。<br />
2.マスタコンピュータの 再 起 動<br />
3.マスタコンピュータ、スレーブコンピュータ 共 に 電 源 が OFF の 状 態 」の<br />
「7」からの 処 理 と 同 じ。<br />
・スレーブコンピュータの 再 起 動 を 行 う 場 合<br />
※スレーブコンピュータのみの 再 起 動 はできません。スレーブコンピュータを 再 起 動 する 際<br />
はマスタコンピュータの 電 源 OFF 後 、スレーブコンピュータの 再 起 動 を 行 う 必 要 がありま<br />
す。 下 記 手 順 にて 実 施 して 下 さい。<br />
1.マスタコンピュータ、スレーブコンピュータの 両 方 で 下 記 の 終 了 処 理 を 実 行<br />
・ 共 有 メモリのアンマップ(IfHnlMemoryUnmap 関 数 )の 実 行<br />
※ 共 有 メモリのマッピング(IfHnlMemoryMap 関 数 )を 行 っていた 場 合<br />
・ウィンドウメモリのアンマップ(IfHnlWindowUnmap 関 数 )の 実 行<br />
※ウィンドウメモリのマッピング(IfHnlWindowMap 関 数 )を 行 っていた 場 合<br />
・ウィンドウのクローズ(IfHnlWindowClose)の 実 行<br />
※ウィンドウのオープン(IfHnlWindowOpen 関 数 )を 行 っていた 場 合<br />
・デバイスのクローズ(IfHnlClose)の 実 行<br />
※デバイスのオープン(IfHnlOpen 関 数 )を 行 っていた 場 合<br />
2.マスタコンピュータの 電 源 OFF<br />
3.スレーブコンピュータの 再 起 動<br />
4.「マスタコンピュータ、スレーブコンピュータ 共 に 電 源 が OFF の 状 態 」の<br />
「2」からの 処 理 と 同 じ<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
17
GPG-8826 Help for Linux<br />
3.1.7 コンパイル<br />
作 成 したプログラムをコンパイルします。 下 記 のコマンドを 実 行 してください。<br />
以 下 はソースファイル 名 を ifhnltest.c とし、 実 行 ファイル 名 を ifhnltest とした 場 合 の 例 です。<br />
#gcc –o ifhnltest ifhnltest.c –libgpg8826<br />
3.1.8 実 行<br />
コンパイルすることで 実 行 ファイル ifhnltest ができていますので、<br />
#./ifhnltest<br />
と 入 力 し、プログラムを 実 行 してください。<br />
より 詳 しいプログラム 方 法 は、『3.2 制 御 手 順 』をご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
18
GPG-8826 Help for Linux<br />
3.2 制 御 手 順<br />
1 つのコンピュータ 上 で 弊 社 光 メモリンク 製 品 を 複 数 枚 使 用 する 場 合 は、<strong>インタフェース</strong>モジュ<br />
ール 上 のロータリスイッチ RSW1 の 設 定 値 が 光 メモリンク 製 品 同 士 で 重 複 しないように 設 定 して<br />
からスロットに 実 装 し、コンピュータを 起 動 して 下 さい。<br />
ロータリスイッチ RSW1 の 設 定 値 は 弊 社 光 メモリンク 製 品 が 複 数 存 在 する 場 合 、 制 御 対 象 を 一 意 に<br />
識 別 するための 番 号 となります。 重 複 していた 場 合 、 本 ソフトウェアの 正 常 動 作 は 保 証 いたしか<br />
ねます。<br />
※ハブ(SIO-882605)はマスタコンピュータのデバイスとして 認 識 します。マスタデバイスのロー<br />
タリスイッチ(RSW1)の 設 定 値 と 重 複 しないように 設 定 してください。<br />
基 本 的 な 制 御 の 手 順 は 以 下 の 通 りです( 記 述 例 は C 言 語 です)。<br />
3.2.1 デバイス 初 期 化<br />
デバイスをIfHnlOpen 関 数 で 初 期 化 します。<br />
初 期 化 が 正 常 終 了 すると、 以 後 、デバイスへのアクセスが 可 能 となります。<br />
unsigned long DeviceHandle;<br />
DeviceHandle = IfHnlOpen (“IFHNL_Device_0”, IFHNL_FLAG_NORMAL);<br />
3.2.2 ウィンドウ 初 期 化<br />
相 手 のコンピュータの 共 有 メモリにアクセスしたい 場 合 は、ウィンドウを 使 用 してアクセスしま<br />
す。<br />
ウィンドウをIfHnlWindowOpen 関 数 で 初 期 化 します。<br />
同 時 にウィンドウに 相 手 のコンピュータの 共 有 メモリを 割 り 当 てます。<br />
この 処 理 には 設 定 ユーティリティ(IFHNLSet)で 設 定 したVirtualウィンドウの 空 きチャンネルが<br />
必 要 です。スレーブコンピュータ⇔スレーブコンピュータ 間 でのメモリ 共 有 を 行 う 場 合 はさらに、<br />
接 続 先 のノード 名 、Linkウィンドウの 空 きチャンネルが 必 要 です。<br />
また、IfHnlGetInfo 関 数 でノードの 情 報 の 取 得 ができます。<br />
初 期 化 が 正 常 終 了 すると、 以 後 、ウィンドウから 指 定 した 共 有 メモリへのアクセスが 可 能 となり<br />
ます。<br />
unsigned long WindowHandle;<br />
IFHNL_LINKWINDOW Linkinfo;<br />
sprintf(Linkinfo.NodeName,”Node1”);<br />
Linkinfo.Ch = 1;<br />
WindowHandle = IfHnlWindowOpen (DeviceHandle, 1, 1 ,1 , &Linkinfo);<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
19
GPG-8826 Help for Linux<br />
この 例 では、 下 記 の 図 ようなスレーブコンピュータ⇔スレーブコンピュータ 間 接 続 です。<br />
スレーブパソコン1<br />
マスタパソコン<br />
スレーブパソコン2<br />
メモリ<br />
メモリ<br />
メモリ<br />
サイズ:1MB<br />
物 理 アドレス 領 域<br />
物 理 アドレス 領 域<br />
物 理 アドレス 領 域<br />
オフセット:1MB<br />
共 有 メモリ 領 域<br />
仮 想 アドレス 領 域<br />
仮 想 アドレス 領 域<br />
仮 想 アドレス 領 域<br />
Virtual ウィンドウ1<br />
Link ウィンドウ2<br />
1 チャンネル<br />
1 チャンネル<br />
スレーブコンピュータ1からスレーブコンピュータ2の 共 有 メモリのオフセット 1MB、サイズ 1MB<br />
の 領 域 へ 接 続 を 行 っています。 自 身 のノードの Virtual ウィンドウの 1 チャンネルからノード 名<br />
「Node1」の Link ウィンドウの 1 チャンネルを 使 用 してアクセスを 行 います。<br />
※Virtualウィンドウ、Linkウィンドウについては「1.5 ウィンドウとは」を 参 照 ください<br />
3.2.3 ウィンドウのマッピング<br />
ウィンドウに 割 り 当 てた 共 有 メモリをIfHnlWindowMap 関 数 で 仮 想 メモリへマッピングします。<br />
仮 想 メモリへアクセスすることで、 相 手 の 共 有 メモリの 情 報 を 取 得 ・ 設 定 できるようになります。<br />
Void* WinMapmem;<br />
WinMapmem = IfHnlWindowMap(DeviceHandle, WindowHandle);<br />
(char)(*WinMapmem) = ‘a’;<br />
printf(“%c\n”, (*((char*)WinMapmem + 0x100)));<br />
3.2.4 自 身 のコンピュータの 共 有 メモリへのマッピング<br />
自 身 のコンピュータ 上 の 共 有 メモリをIfHnlMemoryMap 関 数 で 仮 想 メモリへマッピングします。<br />
仮 想 メモリへアクセスすることで、 自 身 のコンピュータ 上 の 共 有 メモリデータを 取 得 ・ 設 定 でき<br />
るようになります。<br />
Void* PhyMapmem;<br />
PhyMapmem = IfHnlMemoryMap(DeviceHandle, 0, 1);<br />
(char)(*PhyMapmem) = ‘a’;<br />
printf(“%c\n”, (*((char*)PhyMapmem + 0x100)));<br />
※ 共 有 メモリについては「1.4 共 有 メモリとは」を 参 照 ください<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
20
GPG-8826 Help for Linux<br />
3.2.5 割 り 込 み 要 求<br />
同 期 をとるときなどに、ノードに 対 して 割 り 込 みを 発 生 させることができます。<br />
ノードに 対 して 割 り 込 みをIfHnlInterruptRequest 関 数 で 要 求 します。<br />
この 処 理 には 設 定 ユーティリティ(IFHNLSet)で 設 定 したノード 名 が 必 要 です。また、IfHnlGetInfo<br />
関 数 でノードの 情 報 の 取 得 ができます。<br />
Ret = IfHnlInterruptRequest(DeviceHandle, “Node1”);<br />
3.2.6 イベント<br />
ノードからの 割 り 込 み 要 求 をコールバックで 取 得 します。<br />
コールバックはIfHnlSetEvent 関 数 で 設 定 ができます。<br />
また、IfHnlKillEvent 関 数 でイベントの 設 定 を 解 除 できます。<br />
void EventProc(unsigned long DeviceHandle, void * UserData, char * NodeName)<br />
{<br />
// 割 り 込 みイベントに 対 応 する 処 理 を 記 述 します<br />
}<br />
Ret = IfHnlSetEvent (DeviceHandle, 10, EventProc, NULL, 0, 0, 0);<br />
Ret = IfHnlKillEvent (DeviceHandle);<br />
3.2.7 アンマップ<br />
共 有 メモリを 割 り 当 てた 仮 想 メモリをIfHnlMemoryUnmap 関 数 、IfHnlWindowUnmap 関 数 で 解 放 しま<br />
す。<br />
アプリケーションでは、 必 ず 仮 想 メモリの 解 放 を 行 ってから 終 了 してください。<br />
Ret = IfHnlMemoryUnmap(DeviceHandle, PhyMapmem);<br />
Ret = IfHnlWindowUnmap(DeviceHandle, WinMapmem);<br />
3.2.8 ウィンドウの 終 了 処 理<br />
ウィンドウの 終 了 処 理 をIfHnlWindowClose 関 数 で 行 います。<br />
アプリケーションでは、 必 ずウィンドウの 終 了 処 理 を 行 ってから 終 了 してください。<br />
Ret = IfHnlWindowClose(WindowHandle);<br />
3.2.9 終 了 処 理<br />
IfHnlClose 関 数 でデバイスの 終 了 処 理 を 行 います。<br />
アプリケーションでは、 必 ず 終 了 処 理 を 行 ってから 終 了 してください。<br />
Ret = IfHnlClose(DeviceHandle);<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
21
GPG-8826 Help for Linux<br />
3.3 メモリ 共 有 できない 接 続 方 法<br />
下 記 のようにコンピュータ1のスレーブデバイスから、コンピュータ3の 共 有 メモリには 直 接 ア<br />
クセスできません。<br />
コンピュータ1<br />
スレーブ<br />
コンピュータ2<br />
マスタ<br />
スレーブ<br />
コンピュータ3<br />
共 有<br />
メモリ<br />
マスタ<br />
×<br />
コンピュータ1とコンピュータ3でメモリの 共 有 を 行 いたいのであれば、 共 有 メモリをコンピュータ2に<br />
設 けて 共 有 してください。<br />
コンピュータ1<br />
スレーブ<br />
コンピュータ2<br />
マスタ<br />
コンピュータ3<br />
スレーブ<br />
マスタ<br />
○<br />
共 有<br />
メモリ<br />
○<br />
3.4 <strong>インタフェース</strong>モジュールのスレーブからマスタへの 切 替 方 法<br />
「6.1 設 定 ユーティリティ(IFHNLSet)」の「デバイスのリフレッシュ」を 参 照 してリフレッシュ<br />
を 行 ってください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
22
GPG-8826 Help for Linux<br />
第 4 章 リファレンス<br />
4.1 関 数 一 覧<br />
No 関 数 名 機 能<br />
1 IfHnlOpen デバイスをオープンします。<br />
2 IfHnlClose デバイスをクローズします。<br />
3 IfHnlGetInfo 光 メモリンクネットワーク 上 のノードの 情 報 を 取 得 します。<br />
4 IfHnlMemoryMap 共 有 メモリを 仮 想 メモリに 割 り 当 てます。<br />
5 IfHnlMemoryUnmap 共 有 メモリから 仮 想 メモリを 解 放 します。<br />
6 IfHnlWindowOpen ウィンドウをオープンします。<br />
7 IfHnlWindowClose ウィンドウをクローズします。リンク 先 のメモリの 割 り 当 てを 解 除 します。<br />
8 IfHnlWindowMap ウィンドウを 仮 想 メモリに 割 り 当 てます。<br />
9 IfHnlWindowUnmap ウィンドウから 仮 想 メモリを 解 放 します。<br />
10 IfHnlWindowGetHandle すでにオープンしているウィンドウのハンドルを 取 得 します。<br />
11 IfHnlInterruptRequest 割 り 込 みを 発 生 させます。<br />
12 IfHnlSetEvent イベントを 設 定 します。<br />
13 IfHnlKillEvent イベントを 解 放 します。<br />
14 IfHnlGetLastError エラー 情 報 を 取 得 します。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
23
GPG-8826 Help for Linux<br />
4.2 関 数 個 別 説 明<br />
1. IfHnlOpen<br />
デバイスのオープンを 行 い、 以 後 のデバイスへのアクセスを 行 えるようにします。<br />
unsigned long IfHnlOpen(<br />
char* NodeName, // ノード 名<br />
unsigned long Flag // オープンフラグ<br />
);<br />
【パラメータ】<br />
NodeName<br />
オープンするノード 名 を 指 定 してください。<br />
Flag<br />
オープンフラグを 指 定 してください。<br />
指 定 可 能 な 識 別 子 は 下 記 のものから 選 択 します。<br />
識 別 子 値 意 味<br />
IFHNL_FLAG_NORMAL 0 通 常 のオープン 時 に 使 用 するフラグです。これを 指 定 する<br />
と 重 複 してオープンすることはできません。<br />
IFHNL_FLAG_SHARE 1 1 つのデバイスを 複 数 のプロセス(アプリケーション)か<br />
ら 重 複 ( 共 有 )して 制 御 することを 許 可 するフラグです。<br />
【 戻 り 値 】<br />
正 常 に 終 了 した 場 合 には、INVALID_HANDLE_VALUE(-1) 以 外 が 返 されます。<br />
他 の 関 数 は、 本 関 数 により 取 得 したデバイスハンドルを 使 用 してデバイスの 制 御 を 行 います。<br />
オープンに 失 敗 した 場 合 には、INVALID_HANDLE_VALUE(-1)が 返 されます。<br />
拡 張 エラー 情 報 を 取 得 するには、IfHnlGetLastError 関 数 を 使 います。<br />
拡 張 エラー 情 報 の 内 容 は『4.5 戻 り 値 一 覧 』をご 参 照 ください。<br />
取 得 出 来 るエラーコードは、 独 自 のエラーコードとなります。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
24
GPG-8826 Help for Linux<br />
【 備 考 】<br />
・IFHNL_FLAG_SHARE の 動 作 について<br />
本 フラグを 指 定 することにより、 同 じデバイスを 2 つ 以 上 のアプリケーションで 共 有 するこ<br />
とが 可 能 となります。IFHNL_FLAG_SHARE を 指 定 せずにオープンされているデバイスに 対 して、<br />
IFHNL_FLAG_SHARE を 指 定 したオープンを 実 行 した 場 合 、オープンは 失 敗 します。<br />
オープン(IfHnlOpen 関 数 )とクローズ(IfHnlClose 関 数 )の 実 行 回 数 は 必 ず 一 致 しなければ<br />
なりません。<br />
また、 同 時 にシェアオープンできる 回 数 は 255 回 までです。<br />
・ノード 名 について<br />
オープンするにはノード 名 を 指 定 します。<br />
ノード 名 はデフォルトは「IFHNL_Device_x」(x はスレーブデバイスの RSW1 の 値 (0~16))と<br />
なります。<br />
各 ノード 名 の 確 認 は、「6.1 設 定 ユーティリティ(IFHNLSet)」にて 確 認 できます。<br />
また、ノード 名 の 変 更 は「3.1.4 ノード 名 変 更 」を 参 照 してください。<br />
本 関 数 で 初 めてポートをオープンする 時 にデバイスノードが 作 成 されます。<br />
そのため 最 初 の 実 行 時 にはスーパーユーザ 権 限 が 必 要 になります。<br />
2 回 目 以 降 に 同 じポートをオープンする 場 合 には、すでにデバイスノードが<br />
作 成 されているため、スーパーユーザである 必 要 はありません。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
25
GPG-8826 Help for Linux<br />
2. IfHnlClose<br />
デバイスをクローズします。<br />
デバイスアクセスのために 使 用 されていた 各 種 リソースの 解 放 を 行 い、 以 後 のデバイスへのア<br />
クセスを 禁 止 します。<br />
unsigned long IfHnlClose(<br />
unsigned long DeviceHandle // デバイスハンドル<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 備 考 】<br />
・ 再 度 、デバイスへのアクセスを 行 う 場 合 にはオープン 処 理 (IfHnlOpen 関 数 )を 呼 び 出 してくだ<br />
さい。<br />
・デバイスクローズ 後 の 各 種 設 定 はクリアされます。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
26
GPG-8826 Help for Linux<br />
3. IfHnlGetInfo<br />
光 メモリンクネットワーク 上 のノードの 情 報 を 取 得 します。<br />
現 在 の 共 有 メモリ、ウィンドウの 設 定 状 態 を 取 得 できます。<br />
unsigned long IfHnlGetInfo(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
unsigned long Index, // ノードのインデックス 番 号<br />
PIFHNL_NODE_INFO Nodeinfo // ノード 情 報 構 造 体 への 参 照<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
Index<br />
ノードのインデックス 番 号 を 指 定 します。( 値 :0~64)<br />
複 数 ノードがある 場 合 は 何 個 目 のノードの 情 報 を 取 得 するか 指 定 します。<br />
自 身 のノードの 情 報 を 取 得 したい 場 合 は 0 を 指 定 しても 取 得 できます。<br />
Nodeinfo<br />
ノード 情 報 を 格 納 する『IFHNL_NODE_INFO 構 造 体 』への 参 照 渡 しを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
27
GPG-8826 Help for Linux<br />
4. IfHnlMemoryMap<br />
自 身 のコンピュータで 光 メモリンクの 使 用 領 域 として 保 持 している 共 有 メモリを 仮 想 メモリに<br />
割 り 当 てます。<br />
※ 共 有 メモリとして 使 用 可 能 なメモリ 領 域 外 にアクセスを 行 った 場 合 、フリーズやカーネルパ<br />
ニックなど、 予 期 しない 動 作 が 発 生 する 恐 れがあります。<br />
共 有 メモリとして 使 用 可 能 なメモリ 領 域 については、「1.4.2 共 有 メモリとして 使 用 可 能 な<br />
メモリ 領 域 について」を 参 照 してください。<br />
void* IfHnlMemoryMap(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
unsigned long StartAddr, // オフセット<br />
unsigned long Size // メモリサイズ<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
StartAddr<br />
割 り 当 て 先 の 共 有 メモリの 先 頭 アドレスからのオフセット( 単 位 :MB)を 指 定 してください。<br />
Size<br />
割 り 当 て 先 のメモリサイズ( 単 位 :MB)<br />
【 戻 り 値 】<br />
正 常 に 終 了 した 場 合 には、 割 り 当 てられた 領 域 へのポインタを 返 します。<br />
割 り 当 てに 失 敗 した 場 合 には、NULL が 返 されます。<br />
拡 張 エラー 情 報 を 取 得 するには、IfHnlGetLastError 関 数 を 使 います。<br />
拡 張 エラー 情 報 の 内 容 は『4.5 戻 り 値 一 覧 』をご 参 照 ください。<br />
取 得 出 来 るエラーコードは、 独 自 のエラーコードとなります。<br />
【 備 考 】<br />
本 関 数 を 実 行 するには「/dev/mem」へのアクセス 権 限 が 必 要 です。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
28
GPG-8826 Help for Linux<br />
5. IfHnlMemoryUnmap<br />
自 身 のコンピュータで 光 メモリンクの 使 用 領 域 として 保 持 している 共 有 メモリをクローズしま<br />
す。<br />
メモリアクセスのために 使 用 されていた 各 種 リソースの 解 放 を 行 い、 以 後 のアクセスを 禁 止 し<br />
ます。<br />
unsigned long IfHnlMemoryUnmap(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
void* Pointer // メモリハンドル<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
Pointer<br />
IfHnlMemoryMap 関 数 で 取 得 したメモリハンドルを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 備 考 】<br />
本 関 数 を 実 行 するには「/dev/mem」へのアクセス 権 限 が 必 要 です。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
29
GPG-8826 Help for Linux<br />
6. IfHnlWindowOpen<br />
デバイスの 保 持 しているウィンドウのオープンを 行 い、 以 後 のアクセスを 行 えるようにします。<br />
ウィンドウへ 別 PC の 共 有 メモリの 割 り 当 てを 行 います。<br />
※ 共 有 メモリとして 使 用 可 能 なメモリ 領 域 外 にアクセスを 行 った 場 合 、フリーズやカーネルパ<br />
ニックなど、 予 期 しない 動 作 が 発 生 する 恐 れがあります。<br />
共 有 メモリとして 使 用 可 能 なメモリ 領 域 については、「1.4.2 共 有 メモリとして 使 用 可 能 な<br />
メモリ 領 域 について」を 参 照 してください。<br />
unsigned long IfHnlWindowOpen(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
unsigned long Ch, // チャンネル<br />
unsigned long StartAddr, // オフセット<br />
unsigned long Size, // メモリサイズ<br />
PIFHNL_LINKWINDOW LinkWindow // Link ウィンドウ 情 報 構 造 体 への 参 照<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
Ch<br />
オープンする Link ウィンドウまたは Virtual ウィンドウのチャンネルを 指 定 してください。<br />
※ウィンドウのチャンネルは 環 境 により 下 記 のようにチャンネル 数 が 異 なります。<br />
マスタコンピュータまたはスレーブコンピュータが x64 環 境 の 場 合 : 同 時 に 2 チャンネル<br />
まで<br />
マスタコンピュータかつスレーブコンピュータが x86 環 境 の 場 合 : 同 時 に 4 チャンネルま<br />
で<br />
StartAddr<br />
割 り 当 て 先 の 共 有 メモリの 先 頭 アドレスからのオフセット( 単 位 :MB)を 指 定 してください。<br />
Size<br />
割 り 当 て 先 のメモリサイズ( 単 位 :MB)<br />
LinkWindow<br />
スレーブコンピュータスレーブコンピュータ 間 の 共 有 メモリの 割 り 当 てを 行 う 場 合 、<br />
アクセスを 行 うLinkウィンドウの 情 報 を 入 力 した『IFHNL_LINKWINDOW 構 造 体 』への 参 照 渡<br />
しを 指 定 します。<br />
マスタコンピュータスレーブコンピュータ 間 の 共 有 メモリの 割 り 当 てを 行 う 場 合 、NULLを<br />
指 定 します。<br />
【 戻 り 値 】<br />
正 常 に 終 了 した 場 合 には、 有 効 なウィンドウハンドルが 返 されます。<br />
他 の 関 数 は、 本 関 数 により 取 得 したウィンドウハンドルを 使 用 してウィンドウの 制 御 を 行 いま<br />
す。<br />
オープンに 失 敗 した 場 合 には、INVALID_HANDLE_VALUE(-1)が 返 されます。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
30
GPG-8826 Help for Linux<br />
拡 張 エラー 情 報 を 取 得 するには、IfHnlGetLastError 関 数 を 使 います。<br />
拡 張 エラー 情 報 の 内 容 は『4.5 戻 り 値 一 覧 』をご 参 照 ください。<br />
取 得 出 来 るエラーコードは、 独 自 のエラーコードとなります。<br />
【 備 考 】<br />
・ 同 チャンネルをシェアオープンできません。<br />
・ 相 手 がダウンした 際 は、 戻 り 値 にエラーが 返 ります。<br />
・Virtualウィンドウ、Linkウィンドウについては「1.5 ウィンドウとは」を 参 照 ください<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
31
GPG-8826 Help for Linux<br />
7. IfHnlWindowClose<br />
デバイスの 保 持 しているウィンドウをクローズします。<br />
メモリアクセスのために 使 用 されていた 各 種 リソースの 解 放 を 行 い、 以 後 のアクセスを 禁 止 し<br />
ます。<br />
unsigned long IfHnlWindowClose(<br />
unsigned long WindowHandle // ウィンドウハンドル<br />
);<br />
【パラメータ】<br />
WindowHandle<br />
IfHnlWindowOpen 関 数 で 取 得 したウィンドウハンドルを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 備 考 】<br />
・ 相 手 がダウンした 際 は、 戻 り 値 にエラーが 返 ります。<br />
再 度 、ウィンドウへのアクセスを 行 う 場 合 にはオープン 処 理 (IfHnlWindowOpen 関 数 )を 呼 び 出<br />
してください。<br />
ウィンドウクローズ 後 にマッピングされた 仮 想 メモリなどが 解 放 されます。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
32
GPG-8826 Help for Linux<br />
8. IfHnlWindowMap<br />
共 有 メモリを 仮 想 メモリに 割 り 当 てます。<br />
void* IfHnlWindowMap(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
unsigned long WindowHandle // ウィンドウハンドル<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
WindowHandle<br />
割 り 当 てを 行 うウィンドウのハンドル(IfHnlWindowOpen 関 数 で 取 得 したハンドル)を 指 定<br />
してください。<br />
【 戻 り 値 】<br />
・ 正 常 終 了 した 場 合 は、 割 り 当 てられた 領 域 へのポインタを 返 します。<br />
割 り 当 てに 失 敗 した 場 合 には、NULLが 返 されます。<br />
拡 張 エラー 情 報 を 取 得 するには、IfHnlGetLastError 関 数 を 使 います。<br />
拡 張 エラー 情 報 の 内 容 は『4.5 戻 り 値 一 覧 』をご 参 照 ください。<br />
取 得 出 来 るエラーコードは、 独 自 のエラーコードとなります。<br />
・ 相 手 がダウンした 際 は、メモリから 読 み 取 れる 値 がすべて FFhとなります。<br />
戻 り 値 は 返 りませんのでご 注 意 ください。<br />
【 備 考 】<br />
本 関 数 を 実 行 するには「/dev/mem」へのアクセス 権 限 が 必 要 です。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
33
GPG-8826 Help for Linux<br />
9. IfHnlWindowUnmap<br />
IfHnlWindowMap 関 数 によって 割 り 当 てられた 仮 想 メモリを 解 放 します。<br />
unsigned long IfHnlWindowUnmap(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
void* Pointer // ウィンドウマップへの 参 照<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
Pointer<br />
IfHnlWindowMap 関 数 で 取 得 したポインタを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 備 考 】<br />
・IfHnlWindowMap 関 数 を 同 じハンドルで 複 数 回 実 行 して 取 得 したポインタは 同 じポインタのた<br />
め 一 回 のIfHnlWindowUnmap 関 数 で 解 放 されます。<br />
・ 相 手 がダウンした 際 は、メモリから 読 み 取 れる 値 がすべて FFhとなります。<br />
戻 り 値 は 返 りませんのでご 注 意 ください。<br />
・ 本 関 数 を 実 行 するには「/dev/mem」へのアクセス 権 限 が 必 要 です。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
34
GPG-8826 Help for Linux<br />
10. IfHnlWindowGetHandle<br />
【 機 能 】<br />
IfHnlWindowOpen 関 数 によって 割 り 当 てられたウィンドウのハンドルを 取 得 します。<br />
ウィンドウをシェアして 使 う 場 合 に 使 用 してください。<br />
【 書 式 】<br />
●C 言 語<br />
Unsigned long IfHnlWindowGetHandle (<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
unsigned long Ch // チャンネル<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
Ch<br />
IfHnlWindowOpen 関 数 によってオープンしているLinkウィンドウまたはVirtualウィンドウ<br />
のチャンネルを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 に 終 了 した 場 合 には、 有 効 なウィンドウハンドルが 返 されます。<br />
本 関 数 により 取 得 したウィンドウハンドルを 使 用 してウィンドウの 制 御 を 行 えます。<br />
ウィンドウのハンドル 取 得 に 失 敗 した 場 合 には、INVALID_HANDLE_VALUE(-1)が 返 されます。<br />
拡 張 エラー 情 報 を 取 得 するには、IfHnlGetLastError 関 数 を 使 います。<br />
拡 張 エラー 情 報 の 内 容 は『4.5 戻 り 値 一 覧 』をご 参 照 ください。<br />
取 得 出 来 るエラーコードは、 独 自 のエラーコードとなります。<br />
【 備 考 】<br />
・IfHnlWindowOpen 関 数 によってオープンしていない 場 合 、ハンドルは 取 得 できません。<br />
・IfHnlWindowOpen 関 数 実 行 時 の 戻 り 値 でINVALID_HANDLE_VALUE(-1)が 返 され、<br />
GetLastError 関 数 を 使 い、 拡 張 エラー 情 報 を 取 得 し、IFHNL_ERROR_ALREADY_OPEN(C0000004h)<br />
が 取 得 できた 場 合 、この 関 数 でのハンドル 取 得 が 可 能 です。<br />
・IfHnlWindowClose 関 数 によってクローズしてしまったウィンドウのハンドルでは 共 有 メモリ<br />
へアクセスできません。ウィンドウのクローズは 使 用 しなくなったときに 行 ってください。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
35
GPG-8826 Help for Linux<br />
11. IfHnlInterruptRequest<br />
割 り 込 みを 発 生 させます。<br />
unsigned long IfHnlInterruptRequest(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
char * NodeName // ノード 名<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
NodeName<br />
割 り 込 みを 発 生 させるノード 名 を 指 定 してください。<br />
スレーブコンピュータからマスタコンピュータ、マスタコンピュータからスレーブコンピ<br />
ュータに 対 して 割 り 込 みを 発 生 させる 場 合 は、 自 身 のノード 名 を 指 定 してください。<br />
スレーブコンピュータから 他 のスレーブコンピュータへ 対 して 割 り 込 みを 発 生 させる 場 合<br />
には、 割 り 込 み 発 生 先 のスレーブコンピュータのノード 名 を 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 備 考 】<br />
・マスタコンピュータを 介 して 割 り 込 みを 発 生 させます。マスタコンピュータのスペックによ<br />
っては 割 り 込 み 発 生 が 遅 延 する 可 能 性 があります。また、マスタコンピュータに 負 荷 がかか<br />
ります。<br />
・この 関 数 が 戻 ってくれば、 割 り 込 みの 発 生 要 求 は 出 し 終 えていますが、 要 求 先 の 割 り 込 み 処<br />
理 が 完 了 していない 可 能 性 があります。<br />
・ 相 手 がダウンした 際 は、 戻 り 値 にエラーが 返 ります。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
36
GPG-8826 Help for Linux<br />
12. IfHnlSetEvent<br />
イベントを 設 定 します。<br />
unsigned long IfHnlSetEvent(<br />
unsigned long DeviceHandle, // デバイスハンドル<br />
unsigned long EventBuffer, // 内 部 入 力 バッファ 数<br />
PIFHNLCALLBACK CallBackProc, // コールバック 関 数 の 参 照<br />
void* UserData, // ユーザデータ<br />
unsigned long CallBackFlag, // コールバック 関 数 呼 び 出 し 方 法<br />
int Reserved, // 予 約<br />
unsigned int Reserved // 予 約<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
EventBuffer<br />
指 定 した 数 分 のデバイスのイベントで 取 得 するノード 名 の 内 部 入 力 バッファを 確 保 します。<br />
1 単 位 につき 16byte の 内 部 入 力 バッファを 取 得 します。<br />
CallBackProc<br />
コールバック 関 数 の 参 照 渡 しを 指 定 します。<br />
UserData<br />
任 意 のデータを 指 定 します。<br />
CallBackFlag<br />
コールバック 関 数 の 呼 び 出 し 方 法 を 指 定 します。<br />
値 説 明<br />
IFHNL_SYNC 0 コールバックを 同 期 実 行 します。<br />
※コールバック 処 理 が 完 了 しないと 次 のコールバック 処 理 が 実 行<br />
されません。<br />
IFHNL_ASYNC 1 コールバックを 非 同 期 実 行 します。<br />
※ 同 時 に 複 数 のコールバックが 実 行 されることがあります。<br />
同 期 処 理 など 行 ってください。<br />
Reserved<br />
< 予 約 >(0 を 指 定 してください。)<br />
Reserved<br />
< 予 約 >(0 を 指 定 してください。)<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
37
GPG-8826 Help for Linux<br />
い。<br />
【 備 考 】<br />
・ 登 録 したイベントは、IfHnlKillEvent 関 数 にて、 削 除 できます。<br />
・コールバック 関 数 については「4.3 イベントについて」を 参 照 ください。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
38
GPG-8826 Help for Linux<br />
13. IfHnlKillEvent<br />
イベント 処 理 を 解 放 します。<br />
unsigned long IfHnlKillEvent(<br />
unsigned long DeviceHandle // デバイスハンドル<br />
);<br />
【パラメータ】<br />
DeviceHandle<br />
IfHnlOpen 関 数 で 取 得 したデバイスハンドルを 指 定 してください。<br />
【 戻 り 値 】<br />
正 常 終 了 した 場 合 は、IFHNL_ERROR_SUCCESSが 返 されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
39
GPG-8826 Help for Linux<br />
14. IfHnlGetLastError<br />
エラー 情 報 を 取 得 します。<br />
unsigned long IfHnlGetLastError(<br />
void<br />
);<br />
【 戻 り 値 】<br />
各 関 数 のエラー 情 報 を 戻 り 値 として 取 得 します。<br />
本 関 数 を 実 行 する 前 に 実 行 していた 関 数 が 正 常 終 了 している 場 合 は、IFHNL_ERROR_SUCCESSが 返<br />
されます。<br />
IFHNL_ERROR_SUCCESS 以 外 の 値 が 返 された 場 合 については、『4.5 戻 り 値 一 覧 』をご 参 照 くださ<br />
い。<br />
【 備 考 】<br />
本 関 数 で 戻 り 値 の 取 得 が 出 来 るのは 以 下 の 関 数 となります。<br />
また、 取 得 出 来 た 戻 り 値 は、 以 下 の 関 数 を 実 行 するまでラッチされます。<br />
関 数 一 覧<br />
IfHnlOpen<br />
IfHnlMemoryMap<br />
IfHnlWindowOpen<br />
IfHnlWindowMap<br />
IfHnlWindowGetHandle<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
40
GPG-8826 Help for Linux<br />
4.3 イベントについて<br />
4.3.1 コールバック 関 数<br />
IfHnlSetEvent 関 数 にて 登 録 し、 割 り 込 みイベントが 発 生 した 時 にコールされるコールバックルー<br />
チンです。<br />
【 書 式 】<br />
コールバックルーチンを 使 用 する 場 合 、 下 記 のように 記 述 します。<br />
( 下 記 はコールバックルーチンを EventProc とする 場 合 の 例 です。)<br />
●C 言 語<br />
void EventProc(unsigned long DeviceHandle, void * UserData, char * NodeName)<br />
{<br />
// 割 り 込 みイベントに 対 応 する 処 理 を 記 述 します<br />
}<br />
コールバックルーチンの 関 数 型 PIFHNLCALLBACK は 下 記 のように 定 義 されます。<br />
typedef void (*PIFHNLCALLBACK)(unsigned long DeviceHandle, void * UserData, char * NodeName);<br />
【パラメータ】<br />
DeviceHandle<br />
デバイスハンドルが 格 納 されます。<br />
UserData<br />
ユーザデータが 格 納 されます。<br />
NodeName<br />
割 り 込 み 要 求 先 のノード 名 が 格 納 されます。( 最 大 16 文 字 )<br />
【 戻 り 値 】<br />
コールバックルーチンに 戻 り 値 はありません。<br />
【 備 考 】<br />
エラーの 場 合 、NodeNameにNULLが 入 り、UserDataにエラー 情 報 が 入 ります。<br />
エラー 内 容 は『4.5 戻 り 値 一 覧 』をご 参 照 ください。<br />
【 使 用 例 】<br />
付 属 のサンプルプログラムをご 参 照 ください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
41
GPG-8826 Help for Linux<br />
4.4 構 造 体 説 明<br />
4.4.1 IFHNL_LINKWINDOW 構 造 体<br />
typedef struct{<br />
char<br />
NodeName[16];<br />
unsigned long Ch;<br />
} IFHNL_LINKWINDOW, *PIFHNL_LINKWINDOW;<br />
メンバ<br />
説 明<br />
NodeName 割 り 当 て 先 のノード 名<br />
スレーブコンピュータスレーブコンピュータ 間 時 に 設 定 が 必 要 です。<br />
Ch<br />
割 り 当 て 先 のノードの Link ウィンドウチャンネル<br />
スレーブコンピュータスレーブコンピュータ 間 時 に 設 定 が 必 要 です。<br />
※ Link ウィンドウチャンネルはシェアアクセスできません。<br />
4.4.2 IFHNL_WINDOW_INFO 構 造 体<br />
typedef struct{<br />
unsigned long WindowSize;<br />
char<br />
NodeName[16];<br />
unsigned long Ch;<br />
unsigned long StartAddr;<br />
unsigned long Size;<br />
} IFHNL_WINDOW_INFO, *PIFHNL_WINDOW_INFO;<br />
メンバ<br />
WindowSize<br />
NodeName<br />
Ch<br />
StartAddr<br />
Size<br />
説 明<br />
ウィンドウのサイズ( 単 位 :MB)<br />
ノード 名<br />
Virtual ウィンドウの 情 報 の 場 合 、 割 り 当 て 先 のノード 名<br />
Link ウィンドウの 情 報 の 場 合 、 割 り 当 て 元 のノード 名<br />
ウィンドウチャンネル<br />
Virtual ウィンドウの 情 報 の 場 合 、 割 り 当 て 先 の Link ウィンドウチャンネル<br />
Link ウィンドウの 情 報 の 場 合 、 割 り 当 て 元 の Virtual ウィンドウチャンネル<br />
マスタコンピュータ⇔スレーブコンピュータ 間 での 使 用 の 場 合 0 が 入 りま<br />
す。<br />
割 り 当 て 先 の 共 有 メモリの 先 頭 アドレスからのオフセット( 単 位 :MB)<br />
割 り 当 て 先 のメモリサイズ( 単 位 :MB)<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
42
GPG-8826 Help for Linux<br />
4.4.3 IFHNL_NODE_INFO 構 造 体<br />
typedef struct {<br />
char<br />
NodeName[16];<br />
unsigned long MasterSharedMemSize;<br />
unsigned long SlaveSharedMemSize;<br />
IFHNL_WINDOW_INFO VirtualWindowInfo [4];<br />
IFHNL_WINDOW_INFO LinkWindowInfo [4];<br />
unsigned long MaxChannelNum;<br />
unsigned long IsMaster;<br />
unsigned long IsReady;<br />
} IFHNL_NODE_INFO, *PIFHNL_NODE_INFO;<br />
メンバ<br />
説 明<br />
NodeName<br />
ノード 名 (16 文 字 まで)<br />
MasterSharedMemSize マスタコンピュータが 保 有 している 共 有 メモリのサイズ。<br />
SlaveSharedMemSize スレーブコンピュータで 保 有 している 共 有 メモリのサイズ。<br />
VirtualWindowInfo Virtual ウィンドウの 情 報 。<br />
値 はチャンネル 順 に 入 力 されます。<br />
割 り 当 ててない 場 合 は、WindowSize メンバが 0 になります。<br />
ウィンドウを 使 用 されていない 場 合 は、Size メンバが 0 になります。<br />
LinkWindowInfo Link ウィンドウの 情 報 。<br />
値 はチャンネル 順 に 入 力 されます。<br />
割 り 当 ててない 場 合 は、WindowSize メンバが 0 になります。<br />
ウィンドウを 使 用 されていない 場 合 は、Size メンバが 0 になります。<br />
MaxChannelNum ノードが 使 用 できる 最 大 ウィンドウチャンネル 数<br />
IsMaster デバイスハンドルがマスタデバイス・スレーブデバイスの 情 報 。<br />
自 分 自 身 のノード 情 報 を 取 得 するときにのみ 有 効 。<br />
1 = マスタデバイスから Open しているノード<br />
0 = スレーブデバイスから Open しているノード<br />
IsReady 光 メモリンクの 使 用 準 備 状 態 の 情 報 。<br />
自 分 自 身 のノード 情 報 を 取 得 するときにのみ 有 効 。<br />
1 = 光 メモリンクの 使 用 準 備 ができています。<br />
0 = 光 メモリンクが 使 用 準 備 ができていません。<br />
※ 本 パラメータが「0」となっている 場 合 、「3.1.6 起 動 手 順 」を 参 照 し、<br />
起 動 手 順 の 実 施 を 行 って 下 さい。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
43
GPG-8826 Help for Linux<br />
4.5 戻 り 値 一 覧<br />
エラー 識 別 子 値 意 味 対 処 方 法<br />
IFHNL_ERROR_SUCCESS 0 正 常 終 了 -<br />
IFHNL_ERROR_NOT_DEVICE C0000001h ドライバを 呼 び 出 せませ<br />
ん。<br />
指 定 したデバイスが 見 つかりません<br />
でした。<br />
指 定 したデバイス 番 号 が 存 在 するか<br />
どうかを 確 認 してください。<br />
IFHNL_ERROR_NOT_OPEN C0000002h ドライバを OPEN できませ<br />
ん。<br />
IFHNL_ERROR_INVALID_HANDLE C0000003h デバイスハンドルが 正 し<br />
くありません。<br />
IFHNL_ERROR_ALREADY_OPEN C0000004h すでにオープン 済 みです。<br />
IFHNL_ERROR_INSUFFICIENT_BUFFER C0000005h データ 領 域 が 小 さすぎで<br />
す。<br />
デバイスのオープン 時 、 何 らかのエラ<br />
ーが 発 生 しました。<br />
ドライバ 内 部 のメモリ 確 保 に 失 敗 し<br />
たなど。<br />
不 正 なデバイスハンドルで 呼 び 出 し<br />
を 行 おうとしました。<br />
OPEN 関 数 で 返 されたデバイスハンド<br />
ルを 使 用 してください。<br />
IfhnlWindowOpen 実 行 時 の 場 合 は<br />
Window のリソースの 領 域 が 確 保 でき<br />
ていません。Window の 再 設 定 を 行 っ<br />
てください。<br />
IFHNL_ERROR_NOT_SUPPORTED C0000007h 未 サポートです。<br />
IFHNL_ERROR_MEMORY_NOTALLOCATED C0000008h メモリ 確 保 に 失 敗 しまし<br />
た。<br />
IFHNL_ERROR_INVALID_PARAMETER C0000009h 引 数 に 誤 りがあります。<br />
IFHNL_ERROR_NOT_FOUND_DEVICE C000000Ah デバイスが 見 つかりませ<br />
ん。<br />
IFHNL_ERROR_KEEP_MAP C000000Bh すでにマップ 済 みです。<br />
IFHNL_ERROR_NOT_FOUND_NAME C000000Ch ノード 名 が 見 つかりませ<br />
ん。<br />
IFHNL_ERROR_MEMORY_SIZE_OVER C000000Dh メモリサイズを 超 えてい<br />
ます。<br />
IFHNL_ERROR_NOT_FOUND_TERMINAL C000000Eh 接 続 先 が 見 つかりません。<br />
IFHNL_ERROR_NETWORK_RESPONSE C000000Fh リンクできません。 マスタデバイスとの 接 続 が 切 れてい<br />
る 可 能 性 があります。<br />
IFHNL_ERROR_ALREADY_SET_EVENT C0000011h すでにイベントが 登 録 さ<br />
れています。<br />
IFHNL_ERROR_NOT_INITIALIZE C0000012h 初 期 化 されていません。<br />
IFHNL_ERROR_INVALID_CANNEL C0000013h チャンネルが 正 しくあり<br />
ません。<br />
IFHNL_ERROR_EVENT_THREAD C0000015h イベントスレッドを 立 ち<br />
上 げることができません。<br />
IFHNL_ERROR_EVENT_OVER_FLOW C0000016h イベントバッファのオー<br />
バーフローが 発 生 しまし<br />
た。<br />
IfHnlSetEvent 関 数 のEventBufferに<br />
十 分 な 大 きさを 指 定 してださい。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
44
GPG-8826 Help for Linux<br />
第 5 章 サンプルプログラム<br />
以 下 、 各 サンプルプログラムの 概 要 を 説 明 します。<br />
サンプルプログラム 名<br />
WriteFile<br />
ReadFile<br />
説 明<br />
ファイル 出 力 サンプルプログラム<br />
ファイル 取 得 サンプルプログラム<br />
5.1 WriteFile<br />
【 概 要 】<br />
ファイル 出 力 を 行 うサンプルプログラムです。<br />
1MB 以 下 のファイルを、 共 有 メモリの 1 チャンネルを 使 用 して Ifhnl.bmp ファイルを 出 力 しま<br />
す。<br />
マスタコンピュータスレーブコンピュータ 間 で 動 作 します。<br />
ファイルの 取 得 は ReadFile サンプルプログラムで 行 ってください。<br />
【 実 行 手 順 】<br />
Node 名 を IFHNL_Device_0 としてください。<br />
共 有 メモリを 1MB 以 上 設 定 してください。<br />
サンプルプログラムには 実 行 形 式 のファイルが 付 属 していません。<br />
ソースコードをコンパイルして 実 行 ファイルを 生 成 してから、 動 作 させてください。<br />
実 行 方 法<br />
各 サンプルプログラムのディレクトリに 移 動 し、make コマンドを 実 行 してください。<br />
例 )# make<br />
Make コマンドにより 作 成 された 実 行 ファイルを 実 行 してください。<br />
例 )# ./WriteFile<br />
【 内 容 】<br />
1.ノード(IFHNL_Device_0)をオープンします。<br />
2. 共 有 メモリの 1 チャンネルをマップします。<br />
3.ファイルをバイナリに 変 換 して、 共 有 メモリに 書 き 込 みます。<br />
データは 下 記 のデータ 構 造 で 入 力 されます。<br />
ファイル 名 (0~15byte)<br />
サイズ(16~19byte)<br />
ファイルのバイナリデータ(20byte~)<br />
4.ノード(IFHNL_Device_0)に 割 り 込 みを 要 求 します。<br />
5. 共 有 メモリをアンマップします。<br />
6. 共 有 メモリをクローズします。<br />
7.ノード(IFHNL_Device_0)をクローズします。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
45
GPG-8826 Help for Linux<br />
5.2 ReadFile<br />
【 概 要 】<br />
ファイル 入 力 を 行 うサンプルプログラムです。<br />
1MB 以 下 のファイルを、 共 有 メモリの 1 チャンネルから 入 力 します。<br />
マスタコンピュータスレーブコンピュータ 間 で 動 作 します。<br />
ファイルの 出 力 は WriteFile サンプルプログラムで 行 ってください。<br />
【 実 行 手 順 】<br />
Node 名 を IFHNL_Device_0 としてください。<br />
実 行 するコンピュータがマスタコンピュータの 場 合 、Link ウィンドウの 1 チャンネルに 1MB 以<br />
上 の 領 域 を 確 保 してください。<br />
実 行 するコンピュータがスレーブコンピュータの 場 合 、Virtual ウィンドウの 1 チャンネルに<br />
1MB 以 上 の 領 域 を 確 保 してください。<br />
サンプルプログラムには 実 行 形 式 のファイルが 付 属 していません。<br />
ソースコードをコンパイルして 実 行 ファイルを 生 成 してから、 動 作 させてください。<br />
実 行 方 法<br />
各 サンプルプログラムのディレクトリに 移 動 し、make コマンドを 実 行 してください。<br />
例 )# make<br />
Make コマンドにより 作 成 された 実 行 ファイルを 実 行 してください。<br />
例 )# ./ReadFile<br />
【 内 容 】<br />
1.ノード(IFHNL_Device_0)をオープンする。<br />
2.ウィンドウの 1 チャンネルのオープンする。<br />
3.ウィンドウの 1 チャンネルをマップする。<br />
4.イベントを 登 録 します。コールバックを 登 録 します。<br />
5.イベント 発 生 を 待 機 し、もし 10 秒 かかってもイベントが 発 生 しなかったら 強 制 終 了 させてプロ<br />
グラムを 終 了 します。<br />
6.イベントが 発 生 すると 下 記 のデータ 構 造 のデータを 取 り 出 します。<br />
ファイル 名 (0~15byte)<br />
サイズ(16~19byte)<br />
ファイルのバイナリデータ(20byte~)<br />
7.バイナリをファイルに 変 換 して、 実 行 ファイルと 同 じフォルダに 保 存 します。<br />
8.ウィンドウをアンマップします。<br />
9.ウィンドウをクローズします。<br />
10. ノード(IFHNL_Device_0)をクローズします。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
46
GPG-8826 Help for Linux<br />
5.3 SIMD 拡 張 命 令 を 利 用 したデータ 転 送<br />
【 概 要 】<br />
SIMD 拡 張 命 令 に 対 応 した CPU を 使 用 される 場 合 、 長 データの 一 括 転 送 に 対 応 した 拡 張 命 令 を 使<br />
用 することでデータ 転 送 を 高 速 に 行 うことができる 場 合 があります。※<br />
【 使 用 例 】<br />
// movdqu を 使 用 した 128bit(16byte) 単 位 のメモリコピー(32bit)<br />
void memcpy_dqu(void *dst, void *src, size_t size)<br />
{<br />
asm (<br />
"movdqu_cpy: "<br />
" movdqu (%%esi), %%xmm0; " // src から xmm レジスタへの 転 送 (128bit)<br />
" lea 16(%%esi), %%esi; "<br />
" movdqu %%xmm0, (%%edi); " // xmm レジスタ から dst への 転 送 (128bit)<br />
" lea 16(%%edi), %%edi; "<br />
" sub $16, %%eax; "<br />
" cmp $16, %%eax; "<br />
" jge movdqu_cpy; "<br />
}<br />
" emms "<br />
:: "a" (size), "S" (src), "D" (dst)<br />
);<br />
【 内 容 】<br />
上 記 の 使 用 例 は SSE2 以 降 で 対 応 した movdqu 命 令 を 使 用 して、128bit(16byte) 単 位 でのデー<br />
タ 転 送 を 行 う 例 となります。<br />
(movdqu 命 令 はアライメントが 揃 っていなくても 使 用 できますが、アライメントを 揃 えたアド<br />
レスで 使 用 する 方 がより 高 速 に 動 作 します。)<br />
Virtual ウィンドウ/Link ウィンドウに 対 してデータ 転 送 を 行 う 際 に、movdqu 命 令 等 の 長 デー<br />
タの 一 括 転 送 に 対 応 した 拡 張 命 令 を 使 用 すると、バースト 転 送 が 発 生 しやくなる 場 合 がありま<br />
す。※<br />
【 注 意 事 項 】<br />
※ご 使 用 される CPU・ディストリビューション 等 によっては 効 果 が 出 ない 場 合 もあります。<br />
※64bit 環 境 で 実 行 する 場 合 は、 使 用 するレジスタを 64bit 用 のものに 変 更 してください。<br />
eax → rax<br />
esi → rsi<br />
edi → rdi<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
47
GPG-8826 Help for Linux<br />
第 6 章 ユーティリティ<br />
以 下 、ユーティリティの 概 要 を 説 明 します。<br />
6.1 設 定 ユーティリティ(IFHNLSet)<br />
デバイス 使 用 時 の 物 理 メモリの 確 保 やウィンドウサイズの 確 保 などを 行 います。<br />
※ 設 定 ユーティリティはスーパーユーザ 権 限 で 実 行 する 必 要 があります。<br />
6.1.1 起 動 方 法<br />
コンソールから 次 のコマンドを 実 行 してください。<br />
#IFHNLSet<br />
起 動 すると、 図 6.1.1-1 のように 設 定 されている 共 有 メモリのサイズ,ノード 名 , 自 身 がマスタ<br />
(M)かスレーブ(S)か, 各 ウィンドウサイズの 一 覧 が 表 示 されます。ここで 設 定 を 行 う 対 象 を 選 択<br />
します。 項 目 の 数 字 (1~3,99)を 入 力 し、「Enter」キーを 押 してください。<br />
********************************************************************<br />
IFHNLSet Fiber-Optic memolink configuration utility Version 1.20.03<br />
Copyright 2013 Interface Corporation. All rights reserved.<br />
The command allocates the shared memory and window size,<br />
and configures the node name for Fiber-Optic MEMOLINK device.<br />
********************************************************************<br />
Shared Memory[MB] = 0<br />
NodeName ||M || LinkWindowSize || VirtualWindowSize ||<br />
|| S|| CH1 | CH2 | CH3 | CH4 || CH1 | CH2 | CH3 | CH4 ||<br />
--------------------------------------------------------------<br />
IFHNL_Device_1 || S|| 0 | 0 | 0 | 0 || 0 | 0 | 0 | 0 ||<br />
IFHNL_Device_0 || S|| 0 | 0 | 0 | 0 || 0 | 0 | 0 | 0 ||<br />
--------------------------------------------------------------------------<br />
Please Select Setting Target.<br />
1:Device.<br />
2:Share Memory.<br />
3:PCI Express Native Setting.<br />
99:Exit.<br />
Mode:<br />
図 6.1.1-1<br />
1:Device.<br />
:デバイスの 設 定<br />
(ウィンドウサイズの 設 定 、デバイスのリフレッシュ)<br />
2:Share Memory.<br />
: 共 有 メモリの 設 定<br />
( 共 有 メモリの 設 定 、 共 有 メモリのリフレッシュ)<br />
3:PCI Express Native Setting :PCI Express Nativeの 設 定<br />
99:Exit.<br />
: 設 定 ユーティリティの 終 了<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
48
GPG-8826 Help for Linux<br />
6.1.2 デバイスの 設 定<br />
※ 本 項 目 の 設 定 はスレーブのみの 設 定 となります。マスタでは 設 定 できません。ご 注 意 ください。<br />
デバイスの 設 定 を 選 択 すると、 図 6.1.2-1のように 表 示 されます。<br />
設 定 を 行 うデバイスのノード 名 を 入 力 してください。<br />
Mode:1<br />
NodeName:<br />
図 6.1.2-1<br />
32bit の 環 境 でスレーブコンピュータで 実 行 した 場 合 はマスタコンピュータの OS の 確 認 が 表 示 さ<br />
れます。OS の 情 報 を 選 択 してください。 選 択 する 数 字 (0~1)を 入 力 し、「Enter」キーを 押 して<br />
ください。<br />
ノード 名 の 入 力 が 完 了 すると、 図 6.1.2-2 のように 設 定 する 項 目 が 表 示 されます。<br />
設 定 する 項 目 の 数 字 (1~2,99)を 入 力 し、「Enter」キーを 押 してください。<br />
Please Select Mode.<br />
1:Set Window Size.<br />
2:Device Refresh.<br />
99:Exit.<br />
図 6.1.2-2<br />
1:Set Window Size.<br />
2:Device Refresh.<br />
99:Exit.<br />
:ウィンドウサイズの 設 定<br />
:デバイスのリフレッシュ<br />
: 設 定 ユーティリティの 終 了<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
49
GPG-8826 Help for Linux<br />
ウィンドウサイズの 設 定<br />
各 ウィンドウのサイズを 設 定 してください。<br />
最 大 4 チャンネル 設 定 することができます。 値 は 2 n で 設 定 できます( 単 位 :MB)<br />
※ 指 定 サイズはコンピュータのメモリリソースを 要 求 します。<br />
リソース 不 足 などにならないよう 注 意 してください。<br />
Virtualウィンドウ,Linkウィンドウについては「1.5 ウィンドウとは」を 参 照 してください。<br />
下 記 設 定 を 行 った 場 合 の 図 6.1.2-3 のようになります。 入 力 した 項 目 は 赤 字 で 表 示 しています。<br />
64bit 環 境<br />
Virtual ウィンドウ :CH1 32MB<br />
:CH2 16MB<br />
Link ウィンドウ :CH1 8MB<br />
:CH2 4MB<br />
Set VirtualWindow Size<br />
VirtualWindow(CH1):32<br />
VirtualWindow(CH2):16<br />
Set LinkWindow Size<br />
LinkWindow(CH1):8<br />
LinkWindow(CH2):4<br />
Restart the computer to enable settings. Do you want to restart now<br />
Select(y/n):<br />
図 6.1.2-3<br />
設 定 を 有 効 にする 場 合 には y を 選 択 し、 再 起 動 を 行 ってください。<br />
再 起 動 を 行 わない 場 合 には n を 選 択 してください。<br />
デバイスのリフレッシュ<br />
<strong>インタフェース</strong>モジュールのスレーブデバイスをマスタデバイスに 戻 す 場 合 は、<br />
この 項 目 での 設 定 が 必 要 です。<br />
項 目 を 選 択 すると、デバイスのリフレッシュが 行 われ、 図 6.1.2-4のようなコメントが<br />
表 示 されます。<br />
Turn off your computer, remove the device, and set position 4 of DSW1 to OFF. Do you want<br />
to shut down the computer.<br />
Select(y/n):<br />
図 6.1.2-4<br />
マスタデバイスに 切 り 替 えたい 場 合 は、yを 選 択 し、コンピュータの 電 源 を 切 り、<br />
コンピュータからデバイスを 抜 き、DSW1 の4 をOFF に 設 定 してください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
50
GPG-8826 Help for Linux<br />
6.1.3 共 有 メモリの 設 定<br />
共 有 メモリの 設 定 を 選 択 すると、 図 6.1.3-1 のように 設 定 する 項 目 が 表 示 されます。<br />
設 定 する 項 目 の 数 字 (1~2,99)を 入 力 し、「Enter」キーを 押 してください。<br />
Please Select Mode.<br />
1:Set Share Memory Size.<br />
2:Share Memory Refresh.<br />
99:Exit.<br />
図 6.1.3-1<br />
1:Set Share Memory Size.<br />
2:Share Memory Refresh.<br />
99:Exit.<br />
: 共 有 メモリの 確 保<br />
: 共 有 メモリのリフレッシュ<br />
: 設 定 ユーティリティの 終 了<br />
共 有 メモリの 確 保<br />
確 保 する 共 有 メモリのサイズを 設 定 します。<br />
ご 使 用 のコンピュータに 搭 載 されている RAM 容 量 ( 単 位 :MB)と、<br />
確 保 するメモリサイズ( 単 位 :MB)を 入 力 してください。 値 は 2 n で 設 定 できます( 単 位 :MB)<br />
下 記 設 定 を 行 った 場 合 の 図 6.1.3-2 のようになります。 入 力 した 項 目 は 赤 字 で 表 示 しています。<br />
コンピュータに 搭 載 されている RAM 2048MB<br />
確 保 する 共 有 メモリ<br />
64MB<br />
Mode:<br />
Please input the size of RAM on your computer.<br />
Size:2048<br />
Please input the size of Share Memory.<br />
Size:64<br />
Please Edit BootLoader.<br />
mem=1984M<br />
-----------------Cautions----------------<br />
The OS may not operate normally<br />
if the RAM capacity available to the OS runs short.<br />
Confirm the recovery method in Help<br />
beforehand in case the OS does not operate.<br />
----------------------------------------<br />
Restart the computer to enable settings. Do you want to restart now<br />
Select(y/n):<br />
図 6.1.3-2<br />
設 定 を 有 効 にする 場 合 には y を 選 択 し、 再 起 動 を 行 ってください。<br />
設 定 後 、 出 力 される 値 ( 上 記 例 では mem=1984M)を Linux の 起 動 時 に<br />
コマンド 行 オプションにて 指 定 してください。※<br />
詳 しくはHelpの「1.4 共 有 メモリとは」を 参 照 してください。<br />
再 起 動 を 行 わない 場 合 には n を 選 択 してください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
51
GPG-8826 Help for Linux<br />
※ここで 出 力 される 値 にはOSが 動 作 するために 必 要 な 領 域 、システムの 使 用 する 領 域 は 考 慮 され<br />
ておりません。<br />
OS が 動 作 するために 必 要 な 容 量 を 下 回 る 値 を 設 定 した 場 合 、OS が 動 作 しなくなる 可 能 性 があ<br />
ります。<br />
ブートローダの 設 定 を 行 う 前 に、コマンド 行 オプションにて 一 度 OSの 動 作 を 確 認 することを 推<br />
奨 いたします。<br />
出 力 された 値 がOSが 動 作 するために 必 要 な 容 量 を 下 回 る 場 合 、 確 保 する 共 有 メモリの 値 を 少<br />
なくし、 再 度 設 定 を 行 ってください。<br />
OSが 動 作 しなくなった 場 合 の 復 旧 方 法 は「1.4.1 復 旧 方 法 」を 参 照 ください。<br />
また、 共 有 メモリとして 使 用 可 能 なメモリ 領 域 外 にアクセスを 行 った 場 合 、フリーズやカーネ<br />
ルパニックなど、 予 期 しない 動 作 が 発 生 する 恐 れがあります。<br />
共 有 メモリとして 使 用 可 能 なメモリ 領 域 については、「1.4.2 共 有 メモリとして 使 用 可 能 なメ<br />
モリ 領 域 について」を 参 照 してください。<br />
共 有 メモリのリフレッシュ<br />
確 保 した 共 有 メモリのクリアを 行 います。コマンド 行 オプションにて 指 定 した 値 はクリアされま<br />
せんので、 再 起 動 、または 設 定 後 、ブートローダの 値 を 元 に 戻 してください。<br />
詳 しくはHelpの「1.4 共 有 メモリとは」を 参 照 してください。<br />
項 目 を 選 択 すると、デバイスのリフレッシュが 行 われ、 図 6.1.3-3 のようなコメントが<br />
表 示 されます。<br />
Mode:Please Edit BootLoader.<br />
Restart the computer to enable settings. Do you want to restart now<br />
Select(y/n):<br />
図 6.1.3-3<br />
設 定 を 有 効 にする 場 合 には y を 選 択 し、 再 起 動 を 行 ってください。<br />
再 起 動 を 行 わない 場 合 には n を 選 択 してください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
52
GPG-8826 Help for Linux<br />
6.1.4 PCI Express Native の 設 定<br />
PCI Express Native の 設 定 を 選 択 すると、 図 6.1.4-1 のように 設 定 する 項 目 が 表 示 されます。<br />
設 定 する 項 目 の 数 字 (1~2,99)を 入 力 し、「Enter」キーを 押 してください。<br />
Please Select Mode.<br />
1:Enable.<br />
2:Disable.<br />
99:Exit.<br />
図 6.1.4-1<br />
1:Enable.<br />
2:Disable.<br />
99:Exit.<br />
:「PCI Express Native」 構 成 に 設 定 します<br />
:「PCI Express Native」 構 成 に 設 定 しません<br />
: 設 定 ユーティリティの 終 了<br />
※PCI Express デバイスが、「PCI Express Native」 構 成 かどうかチェックしているディストリビ<br />
ューションでは、 上 記 設 定 を「Enable」に 設 定 することで 光 メモリンクを 使 用 することができ<br />
ます。<br />
※ 設 定 を 実 行 したコンピュータのスレーブデバイスに 対 して 設 定 が 行 われます<br />
項 目 を 選 択 し、 設 定 が 行 われると、 図 6.1.4-2 のようなコメントが 表 示 されます。<br />
Restart the computer to enable settings. Do you want to restart now<br />
Select(y/n):<br />
図 6.1.4-2<br />
設 定 を 有 効 にする 場 合 には y を 選 択 し、 再 起 動 を 行 ってください。<br />
再 起 動 を 行 わない 場 合 には n を 選 択 してください。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
53
GPG-8826 Help for Linux<br />
第 7 章 重 要 な 情 報<br />
保 証 の 内 容 と 制 限<br />
弊 社 は 本 ドキュメントに 含 まれるソースプログラムの 実 行 が 中 断 しないこと、またはその 実 行 に<br />
誤 りが 無 いことを 保 証 していません。<br />
本 製 品 の 品 質 や 使 用 に 起 因 する、 性 能 に 起 因 するいかなるリスクも 使 用 者 が 負 うものとします。<br />
弊 社 はドキュメント 内 の 情 報 の 正 確 さに 万 全 を 期 しています。 万 一 、 誤 記 または 誤 植 などがあっ<br />
た 場 合 、 弊 社 は 予 告 無 く 改 訂 する 場 合 があります。ドキュメントまたはドキュメント 内 の 情 報 に<br />
起 因 するいかなる 損 害 に 対 しても 弊 社 は 責 任 を 負 いません。<br />
ドキュメント 内 の 図 や 表 は 説 明 のためであり、ユーザ 個 別 の 応 用 事 例 により 変 化 する 場 合 があり<br />
ます。<br />
著 作 権 、 知 的 所 有 権<br />
弊 社 は 本 製 品 に 含 まれるおよび 本 製 品 に 対 する 権 利 や 知 的 所 有 権 を 保 持 しています。<br />
本 製 品 はコンピュータ ソフトウェア、 映 像 / 音 声 ( 例 えば 図 、 文 章 、 写 真 など)を 含 んでいます。<br />
医 療 機 器 / 器 具 への 適 用 における 注 意<br />
弊 社 の 製 品 は 人 命 に 関 わるような 状 況 下 で 使 用 される 機 器 に 用 いられる 事 を 目 的 として 設 計 、 製<br />
造 された 物 では 有 りません。<br />
弊 社 の 製 品 は 人 体 の 検 査 などに 使 用 するに 適 する 信 頼 性 を 確 保 する 事 を 意 図 された 部 品 や 検 査 機<br />
器 と 共 に 設 計 された 物 では 有 りません。<br />
医 療 機 器 、 治 療 器 具 などの 本 製 品 の 適 用 により、 製 品 の 故 障 、ユーザ、 設 計 者 の 過 失 などにより、<br />
損 傷 / 損 害 を 引 き 起 こす 場 合 が 有 ります。<br />
複 製 の 禁 止<br />
弊 社 の 許 可 なく、 本 ドキュメントの 全 て、または 一 部 に 関 わらず、 複 製 、 改 変 などを 行 うことは<br />
できません。<br />
責 任 の 制 限<br />
弊 社 は、 弊 社 または 再 販 売 者 の 予 見 の 有 無 にかかわらず 発 生 したいかなる 特 別 損 害 、 偶 発 的 損 害 、<br />
間 接 的 な 損 害 、 重 大 な 損 害 について、 責 任 を 負 いません。<br />
本 製 品 (ハードウェア,ソフトウェア)のシステム 組 み 込 み、 使 用 、ならびに 本 製 品 から 得 られる<br />
結 果 に 関 する 一 切 のリスクについては、 本 製 品 の 使 用 者 に 帰 属 するものとします。<br />
本 製 品 に 含 まれるバグ、あるいは 本 製 品 の 供 給 ( 納 期 遅 延 )、 性 能 もしくは 使 用 に 起 因 する 付 帯 的<br />
損 害 もしくは 間 接 的 損 害 に 対 して、 弊 社 に 全 面 的 に 責 がある 場 合 でも、 弊 社 はその 製 品 に 対 する<br />
改 良 ( 正 常 に 動 作 する)、 代 品 交 換 までとし、 金 銭 面 での 賠 償 の 責 任 は 負 わないものとしますので、<br />
予 めご 了 承 ください。<br />
本 製 品 (ソフトウェアを 含 む)は、 日 本 国 内 仕 様 です。 本 製 品 を 日 本 国 外 で 使 用 された 場 合 、 弊<br />
社 は 一 切 責 任 を 負 いかねます。また、 弊 社 は 本 製 品 に 関 し、 海 外 での 保 守 サービスおよび 技 術 サ<br />
ポート 等 は 行 っておりません。<br />
商 標 / 登 録 商 標<br />
本 書 に 掲 載 されている 会 社 名 、 製 品 名 は、それぞれ 各 社 の 商 標 または 登 録 商 標 です。<br />
© 2012, 2013 Interface Corporation. All rights reserved.<br />
54