22.01.2015 Views

こちらから - インタフェース

こちらから - インタフェース

こちらから - インタフェース

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!