がある。
news:a26g3t$bue$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.ddk.network/763
(ただしsinはQNX4用&&psin専用だったような)
[Photon] 新しいPHFフォントの入れ方
nntp://inn.qnx.com/qdn.public.qnxrtp.photon/2407
[cc][package] 開発用 -devパッケージを作らせない方法
packager -D を使う。
news:ar0vo3$bsi$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.applications/2244
なぜQNXがあまり有名でないのか(宣伝してないのか)の考察:
数少ない米・加の文化の違いによる?
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1403
このスレッドは読んどいた方がいい。
営業副部長(副社長? Vice President Marketing)のリプライ。必読。
ここ半年ほど宣伝がなかったのは、市場調査や方向性を定めるのに
時間をかけていたから。QSSL内部的にも大きく様変わりしている、らしい。
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1434
(RTPの位置づけ)
RTPは開発用にユーザーコミュニティに提供(enable)するもの。
どっちみちQNXを使って製品を作るなら以前からライセンスを
買ってもらう必要がある。
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1455
なぜSMP?
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1474
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1479
電話交換機市場に食い込むつもりであるので、SMPは絶対必要。
サポートを落とす気はない。
日本の交換機はCTRONの独占状態なので、日本ではきついかも。
日本では極小組み込みではITRONが好まれているので、
QNXが入り込めるのは中規模組み込み…プラント制御とか
キャッシュレジスター (WinCEが使われるような分野)に
なるんだろうか?
[net] 実は標準で SOCKSが入っている。SOCKSinit()のマニュアル参照。
nntp://inn.qnx.com/qdn.public.qnxrtp.newuser/3901
ただしバージョン4.2 。
[net] PPPoEの質問が2002/01から増えてきているが、なぜだろう?
まとめようにも自分とこに環境がないから確認ができない
QNX6のええところ vs QNX4
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1479
・完全プリエンプタブル割り込みハンドラ (preemtiveの意味が判ってない)
・優先度継承
・SMP
・POSIX threads
・DLL
・とりあえず使えるC++
・サポート (QNX4はサポートが切られる)
[cc][dev] InterruptAttach() の簡単な例
タイマ割り込みでスピーカを駆動する。割り込みジッタの観測にも使える。
(未確認)
news://inn.qnx.com/a7119b$6ct$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.os/7415
#include
#include
#include
const struct sigevent *
tick(void *arg, int id)
{
static bit;
out8(0x61, (in8(0x61) & ~3) | bit);
bit = bit ? 0 : 2;
return NULL;
}
main()
{
ThreadCtl(_NTO_TCTL_IO, 0);
InterruptAttach(_NTO_INTR_CLASS_EXTERNAL, tick, NULL, 0,
_NTO_INTR_FLAGS_END);
sleep(1000);
}
[photon] なんでVoyagerをPageDownでスクロールさせると激遅なのか?
垂直同期割り込みを待ってbitbltするように作られてないから、
らしい。
news:3C98C219.2E739CDD@daimi.au.dk
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1730
[photon] XFree86-4.2ではマウス用devi-hirunをあらかじめ走らせる!
news:a7ksml$fbg$2@inn.qnx.com
nntp://inn.qnx.com/comp.os.qnx/11373
file:/ftp/pub/qnx/How-To-XFree86-4.2
[boot]ブート時の2秒待ちを却下する
ぬあんとブートローダをバイナリパッチ
http://qdn.qnx.com/support/bok/solution.qnx?9534
[cc] -shared(-fPIC)でないとコアダンプ
QNX6は Copy-on-Write をサポートしていないので、
共通メモリ領域に書こうとすると速攻で SIGSEGV になる。
news:a8g3ag$cuc$1@nntp.qnx.com
nntp://inn.qnx.com/gqdn.public.qnxrtp.devtools/3061
(CoWのあるOSでは実行時ペナルティがあるだけで-fPICでなくても
動くには動く)
メモリ不足だとfork()でこけるのも似たような事情だろう。
[boot] qnxbase.qfsの入れ替え
/boot/fs/qnxbase.qfs を入れ替えようと mv でどかそうとしても
resource busy ではねられる。ので、
/boot/fs/qnxbase.qf0 を置いておけば、ブート時に
そっちをqnxbase.qfsにする機能が diskboot についている。
古いほうは qnxbase.qf1にリネームされる。
(まあめったにやらないが。qnxbase.qfsのコピーをしくじっている
時くらいか)
[dev] センサ・ファン回りをいじるツール・resmgr(未チェック)
news:abpml4$34p$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.installation/4946
(/ftp/pub/qnx/ed1k-fan.c.article)
ed1kのfan.c(回転数制御)と温度計測。LM系チップ用か?
news:3CE0E1CC.7000309@csical.com
nntp://inn.qnx.com/qdn.public.qnxrtp.installation/4950
rallenの ISAにあるW83781D用resmgrとPhoton App
(/ftp/pub/qnx/rallen-healthmonitor.article)
[dev] CMI 8338/8738ドライバ (未チェック)
http://mike.qnx.org.ru/cmi/
/ftp/pub/qnx/cmpci-src-20020501.tar.gz
[dev] VT8233 オーディオドライバ (未チェック)
news:ajv9i9$3tm$1@inn.qnx.com
nntp://inn.qnx.com/comp.os.qnx/12278
http://mike.qnx.org.ru/vt8233/
[dev][usb] USBコントローラが複数あるときは devu-uhci -p1
(未チェック)
news:apru5p$47v$1@nntp.qnx.com
nntp:inn.qnx.com/qdn.public.qnxrtp.os/9727
[dev][photon] svgaドライバのリフレッシュレート変更 (未チェック)
Graphics DDKに手を入れる。
news:3CECBA60.7040407@netscape.net
nntp://inn.qnx.com/qdn.public.qnxrtp.installation/5000
1:Get hold of the SVGA driver code from QNX (It's on the CD)
2:Remove the entry that prevents super than super modes
3:Find the change mode routine ( this just calls a vesa mode) (mode.c)
4:Before the change mode ( I put it after the DISP_ASSERT();) Write the
following:
out8(0x3d4,0x33); Sets access to REG33
out8(0x3d5,0x04); Sets refresh rate (4 gives 75Hz)
[license] QCLとOCLの違い
(きっちり比較したわけではないが…)
QCL (QNX Community License) は、派生物の利用を
(正規ライセンスを取得している)QNX RTOSに限定しているが、
OCL (Open Community License) にはその制限はない。
[sys] uptime
uptimeはないが、ブート時刻は pidin info で出る。
procntoの起動時に RTC が指している時刻が
_SYSPAGE_ENTRY(sysinfo,qtime)->boot_time
にそのまま放り込まれるが、この値は RTCがローカル時刻
を指しているとローカルになる。表示時にさらに
localtime()で補正がかかるので、
http://cvs.qnx.com/cgi-bin/cvsweb.cgi/utils/p/pidin/pidin.c
表示は実際よりさらに9時間進む。(JST-9場合)
(UNIX一般と同じく)RTCをGMTにしておけばこの問題は起こらない。
[cc][resmgr] _IO_CONNECT_RET_LINK の使い方
ハードリンクみたいなresmgrを作る時に使うらしい。
例:/dev/redirect 任意のパスに丸投げする
Re: Example of returning _IO_CONNECT_RET_LINK?
news:as3m43$qqo$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.os/9925
[installer] *.qpr を開いても空 qnxinstall
・qnxinstallでは、既にインストールされているパッケージは
開いても何も出てこない。
・そうでない場合は、
/etc/system/package/sources/* を消すとまともになる
ことがある。
Re: Install of .qpr-files
news:b0s47e$2oc$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.installation/295
[core] 動作中のcoreをとる
dumper -p {pid}
プロセスを殺さずにコアダンプが採れる。
[packager] *.qpg の内容を拾ってくれない
Launch Menu や install script の設定をしているような
高度な *.qpg を使うときは packager -m *.qpg ではなく、
直接 packager *.qpg とする。
DESTDIRの指定がなくなるので、必要なファイルは
で宣言しておく必要あり。
(ファイルが追加されたら毎回 *.qpg を書き換えないといけない−
他のOSのパッケージでも似たようなもんだが)
[packager] /usr/bin から /x86/opt/bin への unionがない
(/x86/opt/bin にモノはあるのだが /usr/bin から見えてない)
凝った設定の *.qpg を書いていて、さらに
/usr/bin -> /x86/opt/bin の Unionをしている他のパッケージが
入っていないとこうなることはある。
*.qpm を点検して、 がなければUnion自体張られていない。
対策は*.qpg中に手で を書く。
/usr/bin -> /x86/opt/bin
/opt/bin -> /x86/opt/bin
------------------------------
....
bin
bin
------------------------------
ただこの加工をやらなきゃいけないのは
他に腐っている個所がある可能性がある
(↓のとか…)
[packager] CVS/ を却下する
最初は QPG:Rule で
なんてのをやっていたが、 CVS/ ディレクトリ自体が
パッケージから消えない。
色々やってみた結果、
(file=のワイルドカードではなく、type="tree" で全部拾う)
でなんかうまく除かれるようになった。
[packager] 一度 QPG:Add されたファイルは再度パッケージされない
同じファイルを2個所にパッケージングする際は、2回目以降に
と、handling="copy" 属性をつける必要がある。
(上では、file="*" の方に copy 属性をつけると
うまくいかなかったような気が)
[fs-pkg] fs-pkg経由だとファイルサイズは正しいが中身がない?
(spatch -bで見ると最初のバイトしかない、
cpると56バイト…ディレクトリノード?)
原因不明。Unionがなくても起こる。
-> qpm でファイルが ではなく として
指定されてる??
(qpgで
で吸い出したもの… ^^^^^^^^^^^^^^が悪い?)
->** 当たり ** filetype="dir"を消したら正しくなった。
環境・マシンによっては変にならない場合もあるんだ、
よくわからん…他のパッケージのUnionで矯正されることがある?
[install] cd0/boot/fs/*.qfs は常にコピー
標準のインストーラー(finstallだっけ)を使うと、
cd0/boot/fs/*.qfs は全部 /boot/fs/ にコピーされる。
∴ CDに cd0/boot/fs/qnxpub100.qfs を用意しておくと
そいつもコピーされる…
実際 cd/boot/fs/qnxpub100.qfs があっても
自動マウントされるのは CDROMブート時だけだし、
作っといても実はあまり便利でないかも。
repository-pub100/ とかのほうがいいか?
[boot][ifs] MultiBootブートローダ?
6.2ではMultiBoot(GRUB)用の elf.boot が用意される
予定だったようだが
Subject: Re: Multiboot support?
news:anlj7d$75t$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.installation/169
実際にはたぶん忘れ去られている。
6.1には *.ifs をむりやり ELF に変換する mkifsf_elf フィルタ
が用意されているが、実験的な半端ものなので
あまり使えない(メモリ16MB固定になる)
[qnet] qnetが通らない?
まずqnetが起動していること。/net/はあるか?
何度か ls /net/<相手> するとつながることがある。
それでもだめなら双方で qnet だけ再起動してみる。
umount /dev/io-net/qnet*
mount -Tio-net npm-qnet.so
qnetのパケットは"IP"だけどsource/destが all zero
(0.0.0.0) のパケットに見えるので、かしこいスイッチングハブは
混乱するかもしれない。
[dev][kbd][devc-con] バイナリを表示させたあと、グラフィック文字ばかり表示される
shift_in (echo '\017') で直る。
[QDN] qdn.public.* と qdn.public.qnxrtp.* 、どっちを使うべき?
公式には qdn.public.* 直下の各グループが Momentics用。
しかし実際には 実質Momenticsの前バージョンであるQNXRTP用の
qdn.public.qnxrtp.* もよく使われている。
QSSLはqnxrtp.*はなくす予定だったらしいが、よく使われているので
結局残してある。
従って qdn.public.installation とqdn.public.qnxrtp.installation
のように似通ったグループが残っている。
初心者にはわかりづらい。
実際は qdn.public.qnxrtp.* はセルフ環境、
qdn.public.* 直下はクロス環境といった感じで
微妙に使い分けられている?
[net] telnet
telnetはポートに関わらず TELNET交渉を
行おうとするので、 telnet www 80 などとして
httpdのデバッグなんかができない。
(set netdataしてみるとよくわかる。mode lineでもダメ)
[log] syslogをslogへ
syslogをslogへリダイレクトするには、
/etc/syslog.conf に
*.* /dev/console
としてからsyslogd を起動する。 syslogd -t 2 あたりか。
/dev/consoleに対するsyslog出力はslogに入るよう
細工されているらしい。(sloggerのマニュアル参照)
slog (sloggerで出るもの)は、ディスクに出力しないので
組み込みでは重宝される。
syslog(syslogd)はデフォルトでは /var/log/syslog に
出すように /etc/syslog.conf が設定されているが、
syslogd自体は起動していない。
恒久設定は /etc/rc.d/rc.local か?
test -f /etc/syslog.conf && /usr/sbin/syslogd -t 2
[term][devc] tipやcuはない
ので、シリアル端末として使いたいのであれば
pterm か qtalk を使う。
pterm:
Photonを起動して
pterm -d /dev/ser1
ボーレート設定などは、他の端末から
stty 9600 で起動できそうだがなんかうまくいかない)
[util] on -f と on -n
Xiaodan Tang によるミニ解説。
on -n だとソケットもローカル側のものを使う!
news:bqg1df$1i5$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.os/12196
このスレッドでは、リモートspawnではゾンビが回収されない
問題が扱われている。spawn()の隠しオプションで回避
[cc][bug][net] socketタイムアウトが使えない
setsockopt( ,SOL_SOCKET,SO_RCVTIMEO, ,,) は 6.2.1以降で直るらしい。
Re: Socket rx timeout
news:bsp936$oq$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.ddk.network/1969
▼6.2関係
・[boot][6.2] NCでは「組み込み」関係のツールがないので、
mkifs,dumpifs がない
/boot/build/ がない
/boot/sys/{bios.boot,procnto,startup-bios} がない
よって /.boot の再生成はできない。
SE (Standard Edition) 以上には用意されている。
むりやり 6.1のbios.bootなんかでも動くようだが相当気持悪いのは確か。
6.1のprocntoだと uname -r が 6.1.0 になるので setconf かなんかで
加工してやる必要がある。
・[install][6.2] インストール
コア部分をインストールして起動すると、Photon設定後に
インストーラー(qnxinstall)が起動して再度 CDROM を要求される。
6.1では開発環境などは個別にインストールしたが、
6.2 (Momentics)では問答無用で全部ぶちこまれるようだ。
(Mozillaなんかいらんのだが…)
(ふつーの人はDDKなんか使わんだろ…)
まぁ「PhABどこだー」と騒ぐ初心者がたくさんいたからでしょうかね…
本当に CDROM からやっていると遅くて死ぬので、*.isoをコピーして
しばらくは直接 /fs/cd0 にマウントしてしまったほうがよろしいようだ。
(初心者向け手順ではナイ。初心者は素直にCD-Rを焼くべし)
・[install][6.2] "3rd Party Software" http://www.qnx.com/developer/download/contrib/
440MBもあるが、半分はソースを納めた src.zip が占めている。
bash/patch/lynx/spinくらいは使うだろうが、他はあまり使わない?
・[6.2][pkg][install]コンポーネント毎のinstall/uninstallはできんのか?
旧pkg-installerで見ても何も出てこないし…
→***
/etc/system/package/packages中の
qnx/bundles/os-6.2.0/x86
の所を消すなりタグ変更なり(?)して無効にすると
全部のパッケージが qnxinstall でも出てくるようになる。
・[6.2][pkg][install] cl-installer
マニュアルなどがないが、コマンドライン用のインストーラーとして
cl-installer てのが新たに用意されているようだ。
(/etc/system/package/session.log の他に ./history.qrs てのを残す)
・[6.2][jp][Photon][dev][kbd] Photonのキーボードが日本語にならない?
→Photon再起動
(リリースノートにもWorkaround記述)
・[6.2][Photon] Flashプラグインが動かない、MPEGが再生できない
/lib/libcpp.so.2 がない。
Shelfからでなくコマンドラインから
voyagerを起動するとエラーが見える。
解決法:
・6.1.0 CPP Compatibility Libs (cpp_compat-slib-1.0) を入れる。
隠しパッケージなので普通は見れない。
pkg-installerでAll Packagesを選ぶとなら見える場合もある。
QNX Realtime Platform/System/Shared Libraries/にある。
普通にインストールしていれば入っているはずなのだが…
・libcpp.so.2a を持ってきて手動で/lib/に放り込む。
//qnx.wox.org/qnx/libcpp.so.2a.gz
・[6.2][dev][pccard][net]Latitude XPi CD 166STでは 6.1 のdevp-pccard -w8,8でないと
IO-DATA PCLA/TE を認識しない。
結論:
・devp-pccard -w8,8 -l7,10
・devn-ne2000 ...width=8,mac=HHHHHHHHHHHH
…
/etc/system/enum/devices/bridgeを書き換えて6.1のdevp-pccard -w8,8を
起動するようにしてもなぜかちゃんと認識しない。
slay devp-pccard; 6.1/sbin/devp-pccard -w8,8; mount -Tio-net ...
とやると認識する…なんかの順番?enum-pccard周辺?環境?
…
devp-pccardを再起動するとIRQが7になるからこれのせい?
devn-ne2000.so に、 width=8 オプションが追加されている。
PCLA/TEではこれを使えばよい。
→devp-pccardを6.2にもどして再起動するとやっぱだめ…
なんかIRQの気がしてきた。起動直後だと IRQ=5 が割り当てられている
(pnpbiosのサウンドと衝突している?)
でも devp-pccard -l7,10 とかするとpinで認識しなくなる?ことがある?
(-lで割り当てた後slayするとその番号は使えなくなる…ようだ)
(このCardBusブリッジのバージョン自体が腐れてるのかもしれんけど…前科あるし)
***とりあえず、6.2の devp-pccard -w8,8 -l7,10 で
ブート時認識するようになったようだ。特定の環境に依存しすぎ。
**MACアドレスが変。-w8,8 , width=8は外した方がよさそう…
なんだが、width=8を外すと受信ができなくなる(なえー)
** devn-ne2000 に mac=HHHHHHHHHHHH を渡せばとりあえずなんとかなる。
汚ない。
・[6.2][dev][pccard][net]Panasonic AL-N2 (Let's note) + PCLA/TE
これも 6.2 でも、
devp-pccard -w8,8 (-lN,N)
devn-ne2000 ...width=8,mac=HHHHHHHHHHHH
が必要。CardBusブリッジはRicoh.
devp-pccardの-wはなくなったんじゃないのか?
・[dev][pccard][net] corega Ether PCC-TD (10baseT) の認識
I/O DATA PCLA/TE と全く同じ。チップセットも同じ(TM3299A)なのか?
vid,did が 1234,5678 みたいなえーかげんな値なのだがこれでいいのか?
Linuxなんかは CIS の文字列でマッチさせてるようなので
問題ないようだが…
==============
#
# Definitions for OEM devices
#
# put this as /etc/system/enum/oem/COREGA
#
# for Momentics 6.2
#
all
##### set this to YOUR card's MAC address #####
set(COREGA_MAC, 009099nnnnnn)
# COREGA Ether PCC-TD (Tamarack TM3299A)
device(pcmcia, ven=1234, dev=5678)
tag(devn)
append(legacy, ",nonet")
requires($(IONET_CMD),)
uniq(netnum, devn-en, 0)
# assume pcmcia only have one ethernet card for now so en0 is always used
# mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq),width=8" /lib/dll/devn-ne2000.so, "/dev/io-net/en$(netnum)")
#
# Issues exactly same as I/O-Data PCLA/TE:
# This card seems to need 8bit-width access;
# for RTP 6.1, "devp-pccard -w8" was needed but for 6.2, devn-ne2000
# has an option "width=8" for this, which is needed for this card for
# proper receive operation
# mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq),width=8" /lib/dll/devn-ne2000.so, "/dev/io-net/en0")
# But makes MAC-addr weird (00A0B0...... read as 0000A0A0B0B0).
# Workaround: hardcode the MAC (argh)
mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq),width=8,mac=$(COREGA_MAC)" /lib/dll/devn-ne2000.so, "/dev/io-net/en0")
use(symbolic=netmgr)
# do we need this?
# seems yes, as without this, netmanager fails to find en0
# when card is already inserted from boot time
# (hot insertion works without this entry)
device(symbolic=netmgr)
# requires(@devn)
waitfor(/dev/socket)
waitfor(/dev/io-net/ip0, 5)
start(netmanager)
==============
・[6.2][dev][cc][ddk] Character DDK には devc-con のソースがない。
6.1の改造devc-conはそのまま6.2でも動くようだが、
ifs再生成ができないので /pkgs/repository/ 以下に置く
姑息な手段しか使えない。
・[6.2]ログイン時になんかディスクをガリガリやる?何?
→ /etc/profile から /etc/profile.d/* を探して実行するためらしい。
・[6.2][photon] PhotonのPointer Camがなくなった。…
モジュール自体は /usr/photon/dll/shelf/ptrcam.so
として残っているので、手動で追加することはできる。
負荷が高いから外されたんじゃないかな…
・[6.2][net]デフォルトでは qnet は使われなくなっている。
(のでmountコマンドの出力は /net// にならない)
使う場合は touch /etc/system/config/useqnet する。
分岐は /etc/system/sysinit
もしくは手動で mount -Tio-net npm-qnet.so
・[6.2][dev][kbd][boot]diskbootのdevc-con/fs-pkg検索方法が若干改造されている。
6.2 では "qnx/os/" しか見ないようで、/x86/ は自動で追加される。
よって /proc/boot/x86/sbin/devc-con を読ませるには
/etc/system/package/packages に追加するエントリは
qnx/os/../../../../proc/boot
・[6.2][pkg][install]CDROMのrepositoryを
* qnxinstallで見ると、"QNX Momentics NC for Neutrino" だけで
個別のパッケージが見えない
* pkg-installer (旧インストーラ)では何も見えない
のを何とかする方法:
・まず repository/b-os-6.2.0-* なファイルを消す。これらが全てをまとめてしまう
bundle を司っている。
・repository/content.tgz を消す、もしくは固め直す。
これには qpm,repository.qrm,index,*repdata/ (要するに qpk以外?)
が入っているが、このcontent.tgzがあると生の *.qpm を持っていかずに
content.tgzを持っていって /tmp に展開する。
(HTTPやCDROMではこのほうが速いからだろう)
・[6.2][pkg][install]ローカルにインストールされているものを
全部まとめて Momenticsではなく各パッケージに分離させて見るには、
b-os-*, bundles の痕跡を全部消す。
・/etc/system/package/packages
qnx/bundles/.... の部分を消す。
これだけでも qnxinstall から余計なパッケージの
uninstallはできるようになる。
(/etc/system/package/installed/* は いじらなくてよい?)
このままでは pkg-installer 側ではインストール済みパッケージが
なぜか見えないので、
・/pkgs/repository/qnx/bundles/ を全部消す。
ここには実ファイルは置かれておらず bundle を示す
MANIFESTだけなので、fs-pkgの再スタート(pkgctl -l)は要らない。
新インストーラ(qnxinstall)は x86 かarmかの表示フィルタが効かないので、
個別のパッケージの管理には旧インストーラ(pkg-installer)のほうが使いやすい。
[6.2.1]では、さらに /etc/system/package/packages から
該当エントリ行を消しておく必要ありかも。
・[jp][6.2][bug] 日本時間が JST09 になっている。
正しくは JST-09.
・/etc/timezone/uc_tz_t を修正、
・phlocaleで再設定 (いったん別のtimezoneを選んでからJapanにする)
コンソールだけの時は /etc/TIMEZONE に直接 JST-09 と書けばよい。
[6.2.1]では直っている。
・[6.1][6.2][bug] strftime(),date の %z が +NNNN ではなく単なる
秒数になっている。
% date +%z
32400 (POSIX的には+0900)
6.2.1では直っている。
/proc/boot/libc の修正なので、*.ifsだけ6.2.1のに入れ替えれば直る。
・[sys] rdate
news:akod83$hpn$2@inn.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.porting/785
・[sys] eject
(v 1.0)
news:b9rjp7$rrn$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.applications/2655
(なんでapplicationsなんだ?)
(手持ち品はもっと新しい)
・*.qnx.comの雰囲気 は6.2出荷前後にだいぶ入れ替わっているが、
developers.qnx.com は 6.1時代のままのようだ。
6.1用 Fixes もまだ入手できる。(2002/07/13)
・[6.2][net][dev] FNW-3602-TX (FE-2500)
devn-tulipは、 vid/did は効くようになったようだが
chipsetを見ない。
(vid=0x14ea,did=0xab08,chipset=2500)
chipset=2500の他にchipset=8035(Abocom SMB8035)が追加されている。
vid/didからchipsetが不明な場合は21143になるが、
これを無理やり2500にバイナリパッチすると、認識はする
(IRQ ok, Rxd ok, ifconfig ok)
が、メディア検出ができない?、送信ができない
しばらくすると固まる(キー入力なし)
抜くと復活する…
ブート直後に mount -Tio-net -overbose=10,vid=0x14ea,did=0xab08,chipset=2500 <改造devn-tulip>
とすると /dev/io-net/en[0-13] ができてしまう(なんだこりゃ)
→singleオプションでen0だけにはできるが…
・[dev] 特定のデバイスのenumuratorを動作させない
ふつーは /etc/system/enum/devices/* をいじるという
手段を思いつくが、実は overrides や oem/ でも設定できる。
news:b1s1u4$6qm$1@nntp.qnx.com
nntp:///comp.os.qnx/
================================ {
From: Brian Stecher
Newsgroups: comp.os.qnx
Subject: Re: [Q] Where to put manual enet config commands?
Date: 5 Feb 2003 22:07:00 GMT
Message-ID:
References:
> Well mods for new devices can be avoided by /etc/system/enum/oem/, but
> is there any clean way to DISABLE particular device's enumuration?
> Mucking with rc.local afterwards isn't neat.
Sure. Create a new entry in an /etc/system/enum/oem/ file
(or in /etc/system/enum/overrides) that has the device that you
want to disable and have no actions associated with it. E.g.:
===================================================
device(pci, ven=10b8, dev=0005)
# do nothing
===================================================
That'll override the definition in base system configuration and
make nothing happen for that device.
--
Brian Stecher (bstecher(#)qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M 1W8
================================ }
(動作させない、ならoverridesに書くのが「正し」そうだ)
・[cc] 実は生ファイルはmmap()できない
共有メモリやメモリマップデバイス(物理メモリ)はmmapできる。
リアルタイムカーネルの性質からすると、
どっちにしてもヒープに明示的に読み込まなきゃならんので
対応してなくても問題ないのかもしれんが(ではMAP_LAZYは何)
一応バグ報告は出ているらしい。
news:av4uvs$mca$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/3832
・[cc][6.2] でも6.2なら生ファイルもmmapできる
MAP_NOSYNCFILE フラグをつければmmapできるらしい。確認済
6.1ではできない。(MAP_ELFを追加するとできる?)
POSIX的には MAP_PRIVATE,SHARED,FIXED以外は未定義なので
実装依存。Solaris では似てそうなものに MAP_NORESERVE なんてのがある。
Subject: Re: mmap possible?!
news:b2tdl3$6m5$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.porting/891
た・だ・し、メモリに書いてもファイルには反映されない。
読み込みのみ。書くときは手動で書く。(NOSYNCFILEてそーゆー意味か…)
Subject: Re: mmap() of files
news:b5vvkh$lcg$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.os/10893
・[6.2][fs-pkg][patch] 6.2.0A patchA-nc.qpr をあてても fs-pkgが入れ替わらない
/sbin/fs-pkg は入れ替わるのだが、
diskboot が /etc/system/package/packages から qnx/os/ を
スキャンするため、 qnx/os-update/ に入っている patch A のfs-pkgは
使われない。
とりあえず直すなら…うーむ…こんなのか?
ln ../os-update/core-2.1.3A /pkgs/repository/qnx/os/core-2.1.3
「正しい」解決法はパッケージつくり直し。
新しいfs-pkg動かねぇ…
(旧fs-pkgでブート後、slay, /pkgs/.../fs-pkgで再起動すれば動くが)
[6.2.1]では/pkgs/repository /qnx/os/ core-2.1.4/... なので
ちゃんと起動時に入れ替わる。
・[sys] shutdown で電源も切る
APM電源も切れるshutdown(shutdownx)を投稿
news:bm45iq$m42$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.x86/287
・[app] tcpdump が起動しない
3rd Party CDROMにある tcpdump は、起動前に
# mount -Tio-net nfm-bpf.so
する必要がある。6.2.1あたりのtcpdumpでは自動的に行うらしい。
・[app] Mozillaが "snd_pcm_open failed: No such file or directory" と文句を言う
サウンドデバイスを使うアプリケーションを裏で起動しているため。
flashplayer か /opt/Mozilla/mozilla/wave
/opt/Mozilla/mozilla/plugins/vpi.so を消すか
/usr/photon/plugins/config をいじる。
news:bmkii7$gb4$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.applications/2833
・[sys][net] ノード間spawnで親が死ぬとゾンビが残る
spawn()に SPAWN_NOZOMBIE フラグをつける。
(マニュアルなし、spawn.hのみ?)
news:bmjdl0$e7c$1@tiger.openqnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/4617
・[boot] loadifsを投稿
GRUBから使える。
multiboot カーネルとして使い、*.ifs をモジュールとして
読み込んでから起動する。
root (hd0,x)
kernel /loadifs
module /progra~1/qnx/boot/fs/qnxbase.ifs
DOS用のLOADQNX.SYSを使わなくても3つ以上の*.ifsが使える。
(Momemtics NCではあまり意味はないが…)
メモリ容量の検出は*.ifs組み込みの bios.boot より
GRUBのほうが若干頑張るので、普通に起動すると
メモリ16M状態で動いてしまう場合にも有効、かも。
(v1.0)
news:b4q5k5$7vl$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.x86/185
v1.1以降なら GRUB のuppermemで
任意のメモリ容量をエミュレート可能予定。
(v1.1)
news:
setlocale(LC_CTYPE, "C-TRADITIONAL");
[fs] io-blk の commit= の違い
マニュアル見ても low と medium の違いがわからんが、
ファイルシステムのメタデータ (stat()で採るもの)の
扱いが違う。
From: John Garvey
Subject: Re: io-blk commit levels
news:brfdc1$ob8$1@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.os/12230
commit= none low medium high
data delayed ? ? sync read() write()
meta delayed async sync sync stat()
fsys delayed ? ? sync bitmap,extent など
sync: すぐに開始して完了を待つ
async: すぐに開始して完了を待たない
delayed: タイムアウトまで開始しない
[cc][pkg] qnxinstallから再起動を要求できる? (未確認)
Subject: Setting REBOOT flag for qnxinstall
news:brpgov$ach$1@inn.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/4764
============= {
From: "Sergey Chernov"
Newsgroups: qdn.public.qnxrtp.devtools
Subject: Setting REBOOT flag for qnxinstall
Date: Wed, 17 Dec 2003 15:26:07 +0300
Message-ID:
NNTP-Posting-Host: dl-tech11.saronline.ru
Xref: inn.qnx.com qdn.public.qnxrtp.devtools:4764
Hello All.
I have found the possibility that allows to set reboot flag for qnxinstall
using the QPM:Script tag.
If reboot flag is set then qnxinstall will initiate the system reboot after
the package installation. This can be useful when the system reboot is
needed after the package installation.
For this purpose the following QPM tags should be specified:
set:$REBOOT
Post
Use
qnx6
I have looked through the documentation about the QPM and QPG tags on
qnx.com, but have not found any mentioning about this possibility.
So, I have the following question:
This possibility is not documented. Can I use it at all?
If I can use it then the next question arises:
Whether there is way to set (or clear) reboot flag for qnxinstall from
my own scripts, which are executed on a different installation stages? Or
it is only possible through the QPM tags?
Thanks in advance.
Best regards,
Sergey Chernov
============= }
・古い QNX News (1987)
http://www.astranetwork.com/~rick/QNX%20News/QNX%20News.html
[cc] automake-1.7.2 の make check が通らない (6.2.0)
通すためにやったこと:
・lib/am/distdir.am の am__remove_distdir = の定義で
find の次の && を ; に変更
・/bin/test を準備、中身は `basename $0` "$@" (shell builtin)
= 以上の修正で通るようになったもの:
condd.test, distname.test, dollar.test, extra6.test,
extra7.test, include2.test, pr9.test, pr87.test, subdircond2.test,
subdircond3.test, subobj5.test, subpkg.test, yacc7.test,
yaccvpath.test
失敗: lex3.test
=====
(condd.test)
・find はエラーがなければ 0 (success)を返すが、
全く何もマッチしなかった場合、SolarisとGNU findは 0,
QNX findは 1 を返す。ので、am__remove_distdir 中の
find .... && rm -fr ... がうまく実行されない。
(inn.qnx.com/qnx.rtos/108 で質問中)
とりあえず automake*/lib/am/distdir.am の am__remove_distdir の
定義を書換えて (&& → ;) しのぐ
・Makefile にて、
all:
test
が動かない。make: test: Command not found と言われる。
これは、 GNU make(3.79.1) は POSIXが規定するように system() を使っている
わけではなく、直接 fork()--exec()するよう最適化されているため。
test は sh 組み込みなので直接 exec() できない。
シェル文字、 "test;" とか "test #" とかすれば sh -c で
起動される。
Solarisなんかは /bin/test が用意されているのでうまくいく。
(中身は`basename` "$@" するシェルスクリプト)
Fri Feb 6 22:43:47 JST 2004
===
失敗: lex3.test
QNXにはlibfl.aがない。
%option noyywrapしろとflexのQNXマニュアルにある。
testSubDir/foo.l の頭にこれ追加してやればとりあえず通る。
(make check 全部通ったことになる)
Sat Feb 7 00:19:51 JST 2004
[net][qnet] QNETで自分の存在を再放送
rmdir /net/`hostname`
From: Peter Martin
news:c2sph6$8nm$1@inn.qnx.com
nntp://inn.qnx.com/comp.os.qnx/14337
[net] 複数の io-net を使い分ける
ネットワークドライバのデバッグに重宝。
SOCK環境変数は 6.3から文書化らしい。
# io-net -p tcpip prefix=/alt
# SOCK=/alt ping 127.1
# export SOCK=/alt
# netstat -in
From: Sean Boudreau
news:c2lamb$i1i$1@inn.qnx.com
nntp://inn.qnx.com/qnx.ddk/104
▼略語・用語集
QSSL
QNX Software Systems Limited.
OSではなく会社としてのQNXを指すときは "QSSL" が使われる。
もともとの社名は "Quantum ..." だったが、
Quantumなんちゃらな会社が多くなってきたので変えた、
てことらしい。
ftp://ftp.qnx.com/usr/free/Tech_Support_FAQ/os/QNX.txt
笑い話:
お客様 :ハードディスクが読めないんですが
サポート:Fsysは動かしてますか?
お客様 :えふなに?
サポート:Fsys。ファイルシステムマネージャ
お客様 :ほえ?
news://inn.qnx.com/9iijcn$87s$2@nntp.qnx.com
nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/758
sin
UNIX の psみたいなコマンド。なんの略だろ。(system infoかな…)
RTPでは pidin が推奨されているが sin にしかない機能もある…
ditto
コンソール出力を複製するコマンド。
QNX4にはあるが、RTPでは使えない。(devc-conの大改造が必要)
Voyager
Photon用のWebブラウザ。
slinger
Webサーバ。
Xphoton
Photon上でXを動かすためのサーバ。
要するに XFree86 の dix が Photon になったもの。
標準添付。
PhinX
Photon in X
Xサーバ上でPhotonを動かすサーバ。Xphotonの逆。
http://betas.qnx.com/phinx/
ただ 6.0.0 patch C 用に作られたままでほったらかし。
Phindows
Win32上でPhotonを動かすサーバ。売り物。
Win32のクロス開発環境で使う。
phditto
Photon上でPhotonを動かすサーバ。
Xnestみたいなもの。他のQNXノードのGUIを持ってこれたりする。
使い方が良くわからん。
RTP
(QNX) RealTime Platform.
カーネル+Photon+開発環境のセット。
裸のSunOSに対する Solaris みたいなもの。x86にしかない。
Momentics
6.2 で "RTP" に代わってつけられた名前。
"Platform"とゆー名称が紛らわしいから、てことらしい。
6.3以降はどうすんだろ。
DDK
Device-driver Development Kit.
RTPのCD-ROMにも一通りは入っている。
(売りもんのDDKはもっと充実しているらしい)
6.2のCD-ROMのDDKはかなり削られているので 6.1のDDKもまだ必要。
PhAB
Photon Application Builder.
ボタンを並べてアプリケーション一丁上がりな Photon用 統合開発環境。
「どこに入ってるん?」はFAQだがCD-ROMの開発ツール群に入っている。
ただ QSSL は Eclipse
に手を挙げてしまったみたいなので、今後どうなるかわからん。
QDN
QNX Developers Network.
狭義には http://qdn.qnx.com/ を指すのだろうが、
qdn.* ニュースグループを含んでいることもある。
それほど範囲が厳密に決まっているわけではないような。
QUICS
QNX Update Information Conferencing System.
QDNの前身。
ftp://ftp.qnx.com/usr/free/QUICS/ に当時のドキュメント
らしきものが残っている。
FAQによればパソコン通信BBSのようなものだったらしい。
QNX
"Quick UNIX" -> "Qunix" -> "QNX"
ftp://ftp.qnx.com/usr/free/Tech_Support_FAQ/os/QNX.txt
Photon
QNX ネイティブのGUI環境。軽量なのが特徴。(ホントか?)
ISR
Interrupt Service Routine.
InterruptAttach() などを参照。
組み込み系の応用が多いので割り込みハンドラを書く人も多い。
pulse
一番単純なプロセス・スレッド間イベント通知。
qnet
QNX 独自のノード間通信プロトコル。
同一セグメントにQNXが稼働していると /net/<ノード名> で参照できる。
IPではないのでルーターは超えられない。
(IPバインドにすれば可能)
resource manager
UNIXのデーモンとデバイスドライバの中間のような存在。
真性マイクロカーネルの QNX ではカーネル(procnto)はすごく小さく、
基本的にはメッセージやイベントの配送だけを行う。
デバイスドライバは例えば "/dev/hd0" に張り付く普通のプログラム
(devb-eideなど)として実装される。
こういったパス名に張り付くプログラムをresource managerと言う。
pci -vvvv
PCIバスにあるデバイスの詳細情報を表示するコマンド。
「…には対応していますか?」の質問には
「対応ハードウェア表を見れ」か「pci -vvvvの出力を送れ」と回答がつく。
Watcom
6.0.0 以前の QNX には Watcom 製のコンパイラとlibcが使われていた。
gccはナリもバイナリもでかい・おそいと不評で、Watcomコンパイラの
復活を望んでいる人も多い。
それでもgccが採用されているのは移植性のため。
Dinkum
C++ ライブラリには、標準で入る GNU libstdc++ の他に
Dinkumware製のものが用意されている。
NCにはない。
QNXZone
http://www.qnxzone.com/
いわゆるポータルサイト。
NC
Non-Commercial Edition
www.qnx.com/nc/ で手に入る、Momenticsの非商用利用限定の無料版。
開発ツールもそろっているので開発も可能。
ただし mkifs系 のツールは除かれている。
PE,SE
Professional Edition, Standard Edition
Momentics の商用版。
組み込み関係ツールやx86以外を使うときに必要。