:


---------------------------------------------------------------
     () QNX Software Systems Ltd., 1996
     : QNX Software Systems Ltd.
      : SWD Software Ltd.
     WWW: http://www.swd.ru/qnx/support/literature/sysarch/
     E-mail: books.qnx@swd.ru
     Date: 04 Mar 2002
---------------------------------------------------------------

QNX. " QNX/Neutrino 2". , (400 .)

QNX4

QNX , .

QNX. , , , . QNX, .

QNX, QNX

:



 

QNX

:

QNX?

. - , , .. - , .

, . , , . , .

QNX . : , .

QNX - . , . QNX , . - , .

QNX , :

QNX

QNX , . , , , "" - .


fig: i/modules.gif


QNX .


- "" . , , , !

QNX - . -, , QNX . -, :

, . .

, , , QNX . QNX :

- - , .

QNX . QNX, , !

, . , , , - .

, . ?

, ( QNX ) , . , , . , .

. ! , QNX .

- , .

, QNX . , QNX , .

, :

(IPC)

, , , .

(Interprocess communication, IPC) , .

QNX , IPC, , .

QNX , IPC. , QNX.

QNX - , . - , .

, . , , " ", , . , , ().

, .. . QNX .

QNX

. QNX .

. , , - . , , , !

, , ( , ). , . QNX IPC .

QNX . QNX , -. , . , QNX , .. .

/, , , , , . QNX "", , QNX (, ), , .

QNX . , , .


Note: QNX . , .

QNX , . , QNX .

QNX, . , IPC , . " ", - , - !

QNX, , , . , , QNX, , , .

QNX.

:

QNX :


fig: i/kernel.gif


QNX.


QNX : , .

IPC

QNX - , . QNX . .

:
: :
Send()
Receive()
Reply() ,

, .. , , .. .

, , Send(), Receive() Reply() . QNX - , (, , , - pipe), .


fig: i/messpass.gif


A B, ,


, , , A B, Send(), Receive() Reply() :

  1. A B, Send(), . A SEND- , B Receive() .
  2. B Receive() A. A REPLY-. B Receive() , .. A.

    , B Receive() , , RECEIVE- . - REPLY-.

  3. B A Reply(). A, . Reply() B, . , .

, .

. A Send(), , . , B A , A . , B Receive(), , .


Note: QNX " " .

, .. , - .

:
: :
Send(), - SEND-
Send(), -, REPLY-
Receive(), RECEIVE-


fig: i/states.gif


.



Note: " ".

Send(), Receive() Reply()

Send(), Receive() Reply(). A B.

Send()

, . Send():

Send( pid, smsg, rmsg, smsg_len, rmsg_len );

Send() :

pid
(process ID), (.. B); ;
smsg
(.. , )
rmsg
( B)
smsg_len
rmsg_len
, A,

, smsg_len rmsg_len - , .

Receive()

Receive(), B , A:

pid = Receive( 0, msg, msg_len )

Receive() :

pid
, (.. A)
0
() , B
msg
,
msg_len
, ,

smsg_len Send() msg_len Receive() , , , .

Reply()

A, B A, Reply():

Reply( pid, reply, reply_len );

Reply() :

pid
, (.. A)
reply
,
reply_len
, ,

reply_len Reply() rmsg_len Send() , .

Reply-

, , - , , , RECEIVE- - . send- : - , , .

, , , : reply- , Reply(). -"" , , . , "", . , . - , , .

, , :


fig: i/blocproc.gif


A B ( ). C, D, E .


QNX :

, , Receive() . , .

, , , RECEIVE- . , , , . Creceive(), , .


Note: Creceive(), .. .

, .

, / , . ( 0 64 ). / , Readmsg() . , Readmsg() . , Writemsg() , , , , / .

. . , , . , , . / QNX, Dev Fsys, .

:


fig: i/multimsg.gif


qqq0 mx . .


QNX 16- , . , , . QNX :
: :
0x0000 - 0x00FF
0x0100 - 0x01FF / ( /)
0x0200 - 0x02FF
0x0300 - 0x03FF
0x0400 - 0x04FF
0x0500 - 0x0FFF QNX

IPC

- , , . , . , .

, , .

:

qnx_proxy_attach(). , , Trigger() , . Trigger() .

"" - . 65535 .


fig: i/prxytrig.gif


- 3 , 3 "" .


IPC

, .

QNX , POSIX, , , UNIX-, , QNX.

, , . .
: :
: kill slay
: kill() raise()

, , :

, , , , . . , . , .

: :
SIGABRT , abort().
SIGALRM -, alarm().
SIGBUS ( QNX ). , .
SIGCHLD . - .
SIGCONT HELD, . - , HELD.
SIGDEV , .
SIGFPE ( ), , , . , .
SIGHUP , , .
SIGILL . , .
SIGINT "" (Break)
SIGKILL - . "" . qnx_pflags(). .
SIGPIPE , .
SIGPWR Ctrl-Alt-Shift-Del shutdown.
SIGQUIT .
SIGSEGV . , .
SIGSTOP (HOLD) . - . qnx_pflags(). .
SIGTERM .
SIGTSTP QNX.
SIGTTIN QNX.
SIGTTOU QNX.
SIGUSR1 1.
SIGUSR2 2.
SIGWINCH .

, signal() ANSI sigaction() POSIX.

sigaction() .

. , , .

, .

. . , , ( ).

, siglongjmp() longjmp() , , siglongjmp() . longjmp() .

, . QNX , . ; .

, QNX . , . - . , .


Note: UNIX , , . UNIX signal() , . . -, , , signal(), . -, signal() , . QNX , , . signal() . (long jump), siglongjmp().

. SEND- RECEIVE- , , :

  1. ;
  2. ;
  3. Send() Receive() .

SEND- , , . RECEIVE-, , , , , Send().

, (.. ), , , - , REPLY-. SIGNAL- . , . :

, SIGNAL-, Send(), (-).

IPC

QNX , . , .

( virtual circuit, VC). VC - , , . VC QNX- :

  1. VC, ; , . , , , VC .
  2. , , VC, VC , . , .
  3. VC , , , .
  4. , VC .

- VC , . - qnx_vc_attach(). VC, , VID. , VID , . VID.

, PID 1 PID 2. 20 - PID 1 - VID PID 2. 40 - PID 2 - VID PID 1. PID 1 PID 2 VID , , , , , .. , , PID 1 VID , VID VID, PID 1 . VID PID 2.


fig: i/vcircuit.gif


. PID 1 VID 2, , VID 1 PID 2.


VID , :

, VC. , , / , VC open() . VC. , qnx_name_locate(), VC . VC PID .

qnx_name_locate() " " ".

, , .

, , .

qnx_proxy_rem_attach(), (nid_t) (pid_t).


fig: i/vproxies.gif


, .


, qnx_proxy_rem_attach().

VC :

VC. , , . , .

VC . :

  1. , VC, , VC, .
  2. VC. , VC.
  3. , VC . .
  4. , VC ; , VC, READY (). , .

, VC, netpoll.

IPC

. "" (sem_post()) "" (sem_wait()) , . , .

, , . , - . - , .

, " " . , , .

:

QNX . , READY, . ( READY - , ). .


fig: i/readyq.gif


(A-F), READY. (G-Z) . A. A, B C , .


, , 0 () 31 (). ; , , 10.
: :
getprio()
setprio()

, QNX :

, . , .

, , READY (.. ). READY, .

READY. , B.


fig: i/ablocks.gif


A , B .


, , .
: :
getscheduler()
setscheduler()

FIFO

FIFO , :


fig: i/method1.gif


FIFO . , .


, , FIFO (.. ) . . , , , , - (, ).

, , :


fig: i/method2.gif


. , ; , READY ( B).


- , . , , , READY . 50 .


Note: , FIFO-.

:


fig: i/method3.gif


. ; 1. READY ( B).


, , , . , .

, , .

-

QNX /. , , , . , , .

, . , , . , , , .

, , , . , .. .

, . , , , , , .

, , . , , . , - . , , , . , "" , . , , .

- , ( ).

- , qnx_pflags() :

qnx_pflags(~0, _PPF_PRIORITY_FLOAT
            | _PPF_PRIORITY_REC, 0, 0);

, . , . , , . .

QNX .

- . QNX , , , . , . - QNX .

, . , .


fig: i/intlat.gif


.


(Til) - , , . , QNX .

Til

(Tqqq1ilqqq0) :
(Til): :
3.3 166 Pentium
4.4 100 Pentium
5.6 100 486DX4
22.5 33 386EX

. "" . - , - .

- -. , , , . QNX , .


fig: i/schedlat.gif


.


, . . , "" , , . , " " (Dev) , , , .

Tsl

(Tsl) :
(Tsl): :
4.7 166 Pentium
6.7 100 Pentium
11.1 100 486DX4
74.2 33 386EX

, .

QNX. - - , . . , .. QNX .


fig: i/stackint.gif


A. IRQx Intx, IRQy Inty. Inty , B, Intx , C.


:

, , . , , , . , , .

, . . , , , , . , .. , , .

QNX :

fork() exec() POSIX, spawn() QNX.

fork()

fork() , . , , .

exec()

exec() . exec() , .. . POSIX- - - fork(), exec() .

spawn()

spawn() . fork() exec(), . fork() exec(), , , spawn() .

, . :
fork()exec()spawn()
*
UID, GID
UID, GID

* : - .

:

  1. .
  2. .
  3. .
  4. .

(ID) , . ( "").

. , ID . .

, , ; . , . , .

:

:

  1. . " " , ID . :
    • , ;
    • , ;
    • ;
    • ( /);
    • ;
    • ;
    • .
  2. , , ( ).

    wait() waitpid(), "" , wait() . ( , , _SPAWN_NOZOMBIE qnx_spawn() qnx_spawn_options(), SIG_IGN SIGCHLD signal(). , .)

    , . - , .

dumper , . .

:

  1. READY () - (.. - ).
  2. BLOCKED () - :
    • SEND-;
    • RECEIVE-;
    • REPLY-;
    • SIGNAL-;
    • SEMAPHORE-.
  3. HELD () - SIGSTOP. ; HELD SIGCONT, .
  4. WAIT () - wait() waitpid() .
  5. DEAD () - , , .. wait() waitpid(). DEAD, . DEAD .

Note: "".


fig: i/allstate.gif


QNX.


:

  1. .
  2. - .
  3. - .
  4. .
  5. .
  6. .
  7. ; .
  8. - .
  9. .
  10. , .
  11. SIGSTOP.
  12. SIGCONT.
  13. .
  14. wait() waitpid(), , .
  15. semwait() .
  16. sempost(), .

(Shell), ps sin ( qnx_psinfo()).

(Shell), sin ( qnx_osinfo()).

ps POSIX; . sin, , QNX; , QNX, , ps.

QNX , . , , .

. , . , , , . , . - - , ?

QNX . , . , .

, , , . QNX , . , , . (/). :
qnx/fsys
company/xyz
/company/xyz


Note: , .

, , ( nameloc). .

. . , , , .

, qnx_name_attach(). , qnx_name_locate().

QNX , . (UTC) 0 , 0 , 0 , 1 1970 . , TZ ( ).

, . sleep; sleep(). delay(), .

, , . POSIX Std 1003.4/Draft 9.

. . , ( Proc ). timer_create().

:

, . , , 9 . , 5 .

. :

: :
timer_settime()

, timer_delete().

ticksize qnx_timerperiod(). 500 50 .

, , timer_gettime().

- .

QNX (, ), , .

:

( ). , . , , .
: :
qnx_hint_attach()
qnx_hint_detach()

, . , ticksize.

, 50 , tick size. POSIX 1003.4 .

/

:

/

/ (I/O, Input/Output) QNX . / . QNX , ( ) , .

QNX . , - /, , , (.. ). , QNX.

/

, , open() /. , (Dev) /dev. open() /dev/xxx, /dev open() Dev ( ).

. . , , :
/ (Fsys)
/dev (Dev)
/dev/hd0 (Fsys)

, QNX (.. /) - , (.. /dev/hd0). . .
: : :
/dev/con1 /dev Dev
/dev/hd0 /dev/hd0 Fsys
/usr/dtdodge/test /Fsys

, , :

prefix=pid,unit:prefix=pid,unit:prefix=pid,unit

pid - ID I/O, unit - , , . , Fsys 3 Dev 5, :

/dev/hd0=3,a:/dev=5,a:/=3,e
: :
prefix
qnx_prefix_query()

QNX , . , . , . , QNX :
/dev/ser1
//10/dev/ser1 10
//0/dev/ser1
//20/usr/dtdodge/test 20

, //0

, , . , :

//5 ls /

ls 5, , :

ls /

. "/" , 5. , , , "/" 5, : !

, , , , ("/"). , , . , //9, :

/usr/home/luc

, :

//9/usr/home/luc

, " /usr/home/luc, 9- ".

, . , , 9, , 9 ( ). :

ls /

//9, :

ls //9/

, :

//5 ls /

ls 5, - //9, ls //9/. .
: :
qnx_prefix_getroot()
qnx_prefix_setroot()
on

, , . , - , .

, (, ), , . , ( ///), .

, I/O. , . :

prefix=-

, , ( , "/"). , (, 10), "/". :

/=//10/

, (/) //10/. , /usr/dtdodge/test :

//10/usr/dtdodge/test

; 10 , .. //10. 10, , , open(). .

, . :

/dev=5,a:/=//10/

, /dev, , , .

. , 20, :

/dev/printer=//20/dev/spool

/dev/printer . , , 20 :

/dev/fd0=//20/dev/fd0

, :

//20/dev/spool //20/dev/fd0

. . QNX . .

, , , .

( ), . , , .

, :

cd //18/

() 18, , . cd dev, //18/dev.

, :

cd /

, . , //9, , cd dev, //9/dev. , .

, . (///) , , , ( ). , , (.. ) .

cd

UNIX cd ( ) , . , - pwd, , cd.

QNX, , cd - "..". :

cd /usr/home/luc/test/../doc

/usr/home/luc/doc, .

" ".


Note: , fullpath.

I/O, open() , (FD), , I/O . ( Sendfd().)

, , . PID FD, , open(). (OCB open control block) I/O.

, I/O OCB PID FD.


fig: i/pidfdocb.gif


PID FD OCB /.


OCB . , . open() OCB. , , lseek(), FD, FD.

, .

, , . FD.


fig: i/tmpfile.gif


A /tmp/file . B .


OCB. :

FD OCB, OCB , , OCB.

, lseek() , , , .

, , dup(), . , .


fig: i/dupfd.gif


, FD dup(). .


spawn() exec(), fcntl() FD_CLOEXEC.

:

(Fsys) . Fsys , , .

?

QNX - , , , . QNX ; Fsys:

. - - - .

Fsys . :

, inode ( ) . inode " (inodes)". , ID . :

ID ID , . , , setuid ( ID ) setgid ( ID ).

QNX . .

. - , ( " ").

- , . . - , . ( " (inodes)" " ").

, /usr/bill/file2.


fig: i/dirpath.gif


QNX /usr/bill/file2.


, , . , link().

, POSIX, . :

QNX - , "" , open() read(). - .

QNX . - .

, , . , , ( - / ). 60 .


fig: i/extents.gif


, , QNX .




, , . , .

" ". , /.bitmap ( " QNX"). . .

(inodes)

QNX . . : , "", . .

, , . , inode ( ).

(.. ), inode . , inode /.inodes, inode.

, , .


fig: i/twolinks.gif


"more" "less".

, /.inodes:

: :
ln
link()

, , . ; . , , , . , .
: :
rm
remove() unlink()

. :

"" ; " " , .

, " " "/" - "/", - .

- , . / - , open(), - "". . , .

//1/usr/fred //2/usr/barney , , ( ). :

//1/usr/fred --> //2/usr/barney

, . . , :

//1/usr/eric/src/test.c --> //1/usr/src/game.c

Figure showing two nodes using symbolic links
: :
ln ( -s)
* rm
, ls

* , ,

. . unlink() ( ), lstat() readlink().

, , , . , ; SYMLOOP_MAX <limits.h>.

(pipes) FIFO

(pipes)

- , / - , . . PIPE_BUF <limits.h>. .

, , . , .

. (Shell). :

ls | more

ls more.
: :
("|")
pipe() popen()


Note: (Pipe) , . () / , .

FIFO

FIFO - , , , FIFO , .
: :
FIFO mkfifo
FIFO mkfifo()
FIFO rm
FIFO remove() unlink()

, :

. / , , .

, / , .

-

- - . - . , Fsys.

. , , . , ( Reply()), , . - , , .

. , , , , . .

, , , / . , :

-

, . , , , . " " "".

QNX , .. , . - .

, 8 . , .

, , . , " " "".

, / .

QNX . .

- , . , (inodes), , (.. ).

. , , , . , , (, ), . , , . , chkfsys.

, :

, "" . (/.inodes), , , , chkfsys .

chkfsys.

- . .

QNX - . - , QNX 512 , . , ( 1).

- , POSIX , open(), read(), write() close(). - , , QNX - , .

QNX . . , .

QNX -, . , . .

"", , . :
:
1 DOS (12- FAT)
4 DOS (16- FAT; <32M)
5 DOS
6 DOS 4.0 (16- FAT; >=32M)
7 OS/2 HPFS
7 QNX 2 ( 1988)
8 QNX 1.x 2.x ("qny")
9 QNX 1.x 2.x ("qnz")
11 DOS 32- FAT; 2047G
12 , 11, LBA Int 13h
14 , 6, LBA Int 13h
15 , 5, LBA Int 13h
77 QNX POSIX
78 QNX POSIX ()
79 QNX POSIX ()
99 UNIX

QNX 4.x , 77 QNX , 78 QNX , 79 . QNX , 78 79 . , fdisk.

, QNX ( fdisk) , .

fdisk , .

QNX - , :


fig: i/twodisks.gif


. DOS, QNX UNIX . DOS QNX .



-

- , - ( " /"). , , - , . mount , - .

, , Western Digital, . DOS, QNX UNIX. DOS QNX.

- /dev/hd0 /dev/hd1 , .

mount, - . :

mount -p /dev/hd0 -p /dev/hd1

- :
: - :
DOS hd0 /dev/hd0t4
QNX hd0 /dev/hd0t77
UNIX hd0 /dev/hd0t99
DOS hd1 /dev/hd1t4
QNX hd1 /dev/hd1t77

, tn , . , DOS t4, UNIX - t99 ..

QNX - . mount - , . :

mount /dev/hd0t77 /

/ , - hd0t77.


Note: , - QNX 4.x ( /dev/hd0t77), - , (, /dev/hd0). - , "corrupt filesystem" ( ).

, umount. , , QNX:

umount /dev/hd0t77

, , .

QNX

QNX :

dinit.


fig: i/qnxpart.gif


QNX .


. , BIOS . (, ), .

, . :

/.boot /.altboot , QNX.

QNX , /.boot. /.altboot , , /.altboot.

, QNX , /.bitmap. , , . . 1, .

, :

DOS

QNX / , -. DOS (Dosfsys). Dosfsys /dos DOS QNX "" .

Dosfsys DOS, DOS QNX. DOS - . /, open(), close(), read() write() DOS , QNX. , QNX DOS, :

cp /usr/luc/file.dat /dos/c/file.dat

, /dos/c - DOS C. cp - , DOS. (, cd, ls mkdir).

DOS QNX, mkfifo() link(), Dosfsys (.. errno).

Dosfsys , . . , , Dosfsys QNX DOS.

CD-ROM

CD-ROM, Iso9660fsys, CD-ROM, CD-ROM, POSIX. CD-ROM .

Iso9660fsys ISO 9660, Rock Ridge. - DOS Windows. , Iso9660fsys .

Efsys.* , , -. , ( PC-Card), , .

Efsys.* . Efsys.* , Efsys.* . :

. , ROM .

- . . , . SRAM .

Efsys.* , ( - / ) , , , . , , , ( ).

, ( " "). Efsys.* , . . mkffs .

Efsys.* , , . .

, mkffs, bpe. , .

POSIX, root, rwx. chgrp, chmod chown .

.

Efsys.*, /dev. Efsys.* /dev/skt1 /dev/skt2. , .

, , ( "" ). Efsys.* /dev/sktXimgY, X - (socket), Y - .

NFS

Sun Microsystems, NFS (Network File System - ) TCP/IP , DOS UNIX . QNX , NFS.


Note: QNX . NFS -QNX NFS , NFS- QNX.

NFS - - . , (ls, cp mv) , .


Note: QNX 4 NFS Socket, TCP/IP. , "" , Socklet, , NFS.

SMB

SMBfsys SMB (Server Message Block) , , Windows NT, Windows 95, Windows for Workgroups, LAN Manager, Samba. SMBfsys QNX- .

SMBfsys , NetBIOS TCP/IP, NetBEUI. , , TCP/IP , QNX-, . , SMBfsys , .

:

QNX (Dev) . / , /dev. , QNX :

/dev/con1

QNX , open(), close(), read() write(). QNX () , .

. Dev ( termios), . / stty; tcgetattr() tcsetattr().

termios , :

, . .
: :
dev_read() read() tcsetattr()
dev_arm()
tcdrain()
Break tcsendbreak()
tcdropline()
dev_insert_chars()
open() fcntl() (O_NONBLOCK mode)

ICANON termios. , . , "" - , (CR), - . - edited. canonical () cooked ().

. (Shell).

, Dev , termios.
Dev : :
LEFT
RIGHT
HOME
END
ERASE
DEL
KILL
UP
DOWN
INS

. QNX .

QNX , , . stty. , VT100 (/dev/ser1), terminfo /dev/ser1:

stty term=vt100 </dev/ser1

, QNX qtalk, :

stty term=qnx </dev/ser1

ICANON , , ("", raw) . , QNX-.

, .

, . , , termios: MIN TIME. dev_read(). , TIMEOUT, . , read() TIMEOUT 0.

n , , :
MINTIMETIMEOUT :
000 , ( n )
M00 n , , , M
0T0 n , T x .1 .
MT0 n , M , T x .1 .
00t .
M0 t n , M t x .1 .
0Tt .
MTt n , M , t x .1 , T x .1 .

QNX.

Figure showing a typical QNX device subsystem

(Dev) . . Dev, , .


Note: , Dev , .

. " - ". .

, Dev , . Dev - .

Dev ; , . Dev , , "" ( , ). Dev (write-behind) . , Dev .

Dev . .

; , 64K. , "" , , .

. Dev , , "" ..

, Dev . Dev , . , QNX, .

, QNX, .

ioctl . ioctl Dev. ioctl QNX qnx_ioctl().

QNX

Dev.con. , - .

QNX . Dev.con / Dev, /dev/con1, /dev/con2 .. , "" .

, , . "" , .

,

QNX ( ), , . console_open(). , :
: :
console_read()
console_write()
(, , , ..) console_arm()
console_size()
console_active()

QNX QNX. . Dev.con , .

Dev.ser. ; /dev/ser1, /dev/ser2 ..

Dev.ser , , - - . , ls:

ls /dev/ser*

Dev.ser /. (""). . , Dev "" . .

Dev.par. Dev.par , , . , , ls:

ls /dev/par*

Dev.par , . Dev.par. , .

Dev.par /, . RECEIVE-, "" Dev. , Dev.par - ( ), , . - , , .

, , . :

- QNX - .

:

(Net) QNX . , IPC , . , :

QNX . . , "" Send(), Receive() Reply().

. , .

. , . , - . .

QNX . , QNX .

, , , , .

/

. , . (, Send(), Reply(), (VC), ..).

, , . VC , .

, .


fig: i/sendrmot.gif


Send() Reply() .


Send() Reply() , :

  1. Send() Reply(), .
  2. , , . , , , .
  3. .
  4. .
  5. .

VC, , , . , .


fig: i/recvrmot.gif


Send() Reply().


, , . :

  1. .
  2. , .
  3. , , .
  4. ( , RECEIVE- REPLY- ).

, , Send(). .

, - . . . . / - , / Ethernet , , / Ethernet / Arcnet.

. , . , .

, , , . QNX .

:

ID

ID . , ID , . Ethernet Token Ring - , . , Ethernet Token Ring 48- ID IEEE 802. Arcnet, , 8- ID.

ID : ( Arcnet), .

ID

, ID , QNX ID . QNX ID . ID , QNX.

ID . , , , ID 1 .

ID . , , ID .

ID , 1. , , Ethernet, ID 2, ID 00:00:c0:46:93:30.

ID QNX-, .

ID

ID . - , . , Ethernet .

7 , 1 2. 8 9 , 1, 2 3.

, ID .


Note: ID . . " " .


fig: i/multinet.gif


.


, , , . , 7 8, 1, 2.

. , , .

, Pentium, 10BASE-T Ethernet, 1.1 , , . Ethernet , . .

, . , 7 8 1 8 7, 2 .

, . , , . - . , .

-"", , (, ), . , , , .

QNX

QNX, IEEE 802.


Note: QNX IEEE 802 , Ethernet, Token Ring FDDI.

Arcnet .


, 17 18, - 18 19:


fig: i/relay.gif


IEEE 802 QNX .


17 18 , . 18 19. 17 19?

IEEE 802, 18 , 17 18 . , 17 19, , .

TCP/IP

QNX QNX . -QNX , QNX , TCP/IP.

, , - IP (Internet Protocol) - . , IP , IP "-" .

IP , (, (login)) (, ). World Wide Web (" "), IP, , .

TCP/IP

TCP/IP QNX Berkley BSD 4.3, TCP/IP .

API

BSD API QNX 4. API API TCP/IP Unix. Windows, Winsock API BSD API. .

, :

accept()
bind()
bindresvport()
connect()
dn_comp()
dn_expand()
endprotoent()
endservent()
gethostbyaddr()
gethostbyname()
getpeername()
getprotobyname()
getprotobynumber()
getprotoent()
getservbyname()
getservent()
getsockname()
getsockopt()
herror()
hstrerror()
htonl()
htons()
h_errlist()
h_errno()
h_nerr()
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
ioctl()
listen()
ntohl()
ntohs()
recv()
recvfrom()
res_init()
res_mkquery()
res_query()
res_querydomain()
res_search()
res_send()
select()
send()
sendto()
setprotoent()
setservent()
setsockopt()
shutdown()
socket()

. .

TCP/IP QNX . RFC, . TCP/IP , RFC 1122. ARP, IP, ICMP, UDP TCP.

NFS

Network File System (NFS) TCP/IP, DOS Unix . NFS - - . QNX.


Note: QNX 4 NFS Socket. , "" , Socklet, , NFS.

SMB

Server Message Block (SMB), , Windows NT, Windows 95, Windows for Workgroups, LAN Manager Samba. SMBfsys QNX .

Photon microGUI

:

. , . , .

Photon microGUI , QNX POSIX .

IPC ( IPC ). QNX IPC , GUI "", , IPC.

/, X Window System, Photon , ( ), GUI .

Photon ( 45K), , . , Photon "" . Photon "" - .

GUI, Photon 3- " " .

, / , , . GUI, , .

"" Photon , . QNX IPC Photon, . Photon "" , , , , Photon "" .

Photon

" " " " . " " . ; .

, , . , Photon (), .


fig: i/regions.gif


Photon , . . / .


"" ( ). . , ().

, , , ( ), , , .

Photon. , , "" . .

, 3- . , , . :

, - . , . , ( 1), - , . .

. , . "" , .

. :
: :
, . , , . - .
, . , ; . , , .
, . ; , . , , .
, . ; . , . , - , , . , , , .

, , , :

, Photon (, , ..), ( ) . , , Photon. :

, , .

, , , " " - , .

, "" , .

, . , , .

, , , , , , . "" (tiles).

, , , , "" . , , , .


fig: i/clipping.gif


, , "".


, , . "" , , ( ) .

, . , . , . , "", "".

API Photon , , , , , . , " ", , . , .

, "" . , "" . , .

QNX IPC , , , , . , , .

, Photon, , , , , .

, . Photon QNX , Photon , , , Photon . , .

Photon. , , , "" , .

. , - , , .

, . , , .

24- RGB ( 8 , ), 16,777,216 . , 24- , , , .

- , , , . "" , , .

, Photon . (16 ) .

Photon , , *.pfr (Portable Font Resource, ), . , PFR PostScript .

(Core Latin) Photon (latin1.pfr), Unicode, Basic Latin (U+0000 - U+007F) Latin-1 Supplement (U+0080 - U+00FF), :

(Extended Latin) (latinx.pfr) Unicode Latin Extended-A (U+0100 - U+017F) Latin Extended-B (U+0180 - U+0217) :

(latin1.pfr), , :

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
.

(latinx.pfr) :

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
.

Photon :

Unicode

Photon . Unicode (ISO/IEC 10646), Photon , .

Unicode ASCII, 16- . escape- . , Unicode - , , - .

UTF-8

UTF-2, UTF-8 ( "8- ") Unicode 8- UNIX.

UTF-8:

:
::
mblen()
mbtowc()
mbstowcs()
wctomb()
wcstombs()

, Photon, PxTranslate, / UTF-8.

Photon - " " (PtDBContainer), .

PtDBContainer , .

Photon , :

  • Canon;
  • Lexmark.
  • Photon / , .

    Photon

    Photon (GUI). . , , .

    . , "" . , .

    Photon , ,- , , , . , , C- callback- . Photon Application Builder (PhAB), Photon, .

    Photon :

    (PtLabel)


    fig: i/label.gif


    . PtLabel , (, , , , , , ..), .

    (PtButton)


    fig: i/button.gif


    . , , . , callback-.

    (PtText, PtMultiText)


    fig: i/text.gif


    Photon :

    (PtToggleButton, PtOnOffButton)


    fig: i/toggle.gif


    - . Photon . - .

    (PtArc, PtPixel, PtRectangle, PtLine, PtPolygon, PtEllipse, PtBezier, PtGrid)


    fig: i/graphic.gif


    Photon . , . , , .

    (PtScrollbar)


    fig: i/scrollb.gif


    . (, PtList, PtScrollArea) .

    (PtSeparator)


    fig: i/separate.gif


    , . .

    (PtSlider)


    fig: i/slider.gif


    , , . .

    (PtTimer)

    . - callback-, . , , .

    (PtBitmap, PtLabel, PtButton)


    fig: i/bitmap_cards.gif


    Photon , . Photon - PtButton, , PtLabel, .

    (RtProgress)


    fig: i/progress.gif


    - (, ), , , , , . .

    (PtMessage)


    fig: i/message.gif


    . Photon , , 3 . (PtAskQuestion()), .

    (PtNumericInteger, PtNumericFloat)


    fig: i/numericfloat.gif


    PtNumericInteger . PtNumericFloat .

    PtUpDown ( /) .

    -

    (PtWindow, PtIcon)


    fig: i/icon.gif


    . ( , ..) . Photon (PWM) - .

    Photon Desktop Manager PWM.

    (PtPane)


    fig: i/pane.gif


    -, . , . , .

    (PtGroup)


    fig: i/group.gif


    - , . , . (, ) , . , .

    (PtScrollArea)


    fig: i/scrolla.gif


    "" . , , . , , .

    ( , ).

    (PtBkgd)


    fig: i/bkgd_earth.gif


    , . .

    (PtMenu, PtMenuBar, PtMenuButton)


    fig: i/menu.gif


    Photon . PtMenuBar . PtMenu , -- (), , . PtMenuButton .

    (PtList)


    fig: i/list.gif


    . , , . PtDivider.

    (PtComboBox)


    fig: i/combobox.gif


    PtText ( ) PtList. , . . , .

    (PtTree)


    fig: i/tree.gif


    - . , . , , ; . .

    Photon, , : - ( ), PhAB ( ), vsin ( ) .

    (PtTty, PtTerminal)


    fig: i/ttyterm.gif


    . .

    - "cut-and-paste" .

    (PtDivider)


    fig: i/divider.gif


    . PtDivider, . , . , , . , PtDivider PtList, .

    . , , .

    (RtTrend)


    fig: i/trend_fixed.gif


    . RtTrend .

    (RtMeter)


    fig: i/rtmeter.gif


    RtMeter , 1/3, 1/2 2/3 . . ; ("drag") .

    (PtFontSel)


    fig: i/fontsel.gif


    . (, ..) (anti-alias).

    (PtFileSel)


    fig: i/filesel.gif


    PtFileSel , . .

    (PtPrintSel)


    fig: i/printsel.gif


    PtPrintSel . .

    HTML (PtHtml)


    fig: i/html.gif


    HTML. HTML- . , , .

    Photon , ! Photon . , , .

    Photon "" , , . Photon :


    Last-modified: Wed, 06 Mar 2002 08:50:13 GMT
    :