Patch title: Release 93 bulk changes
Abstract:
File: /linux/kernel/device.pli
Key:
    Removed line
    Added line
module "/pliant/language/os.pli"
module "/pliant/admin/file.pli"

function os_mknod pathname mode dev -> err
  arg CStr pathname ; arg Int mode dev ; arg Int err
  kernel_function 14

constant os_S_IFCHR 2*8^4 # 0020000
constant os_S_IFBLK 6*8^4 # 0060000

public

constant kernel_character_device os_S_IFCHR
constant kernel_bloc_device os_S_IFBLK

function kernel_make_device device kind major minor write -> status
  arg Str device ; arg Int kind major minor ; arg CBool write ; arg Status status
  file_delete device
  file_tree_create device
  status := shunt (os_mknod file_os_name:device kind+6*8^2+4*8+4 major*2^8+minor)=0 success failure
  if write
    file_rights device undefined undefined 6*8^2+6*8+6 0

function kernel_make_device device kind major minor -> status
  arg Str device ; arg Int kind major minor ; arg Status status
  status := kernel_make_device device kind major minor false

function kernel_make_device device -> status
  arg Str device ; arg Status status
  var Str name := device (device search_last "/" -1)+1 device:len

  if (name parse "hd" any:(var Str drive) (var Int part)) and drive:len=1 and drive>="a" and drive<="b" and part>=1 and part<64
    status := kernel_make_device device kernel_bloc_device 3 64*(drive:0:number-"a":number)+part
  eif (name parse "hd" any:(var Str drive) (var Int part)) and drive:len=1 and drive>="c" and drive<="d" and part>=1 and part<64
    status := kernel_make_device device kernel_bloc_device 22 64*(drive:0:number-"c":number)+part
  eif (name parse "hde" (var Int part)) and part>=1 and part<=8
    status := kernel_make_device device kernel_bloc_device 33 part
  eif (name parse "hd" any:(var Str drive)) and drive:len=1 and drive>="a" and drive<="b"
    status := kernel_make_device device kernel_bloc_device 3 64*(drive:0:number-"a":number)
  eif (name parse "hd" any:(var Str drive)) and drive:len=1 and drive>="c" and drive<="d"
    status := kernel_make_device device kernel_bloc_device 22 64*(drive:0:number-"c":number)
  eif name="hde"
    status := kernel_make_device device kernel_bloc_device 33 0
  eif (name parse "sd" any:(var Str drive) (var Int part)) and drive:len=1 and drive>="a" and drive<="p" and part>=1 and part<16
    status := kernel_make_device device kernel_bloc_device 8 16*(drive:0:number-"a":number)+part
  eif (name parse "sd" any:(var Str drive) (var Int part)) and drive:len=1 and drive>="q" and drive<="z" and part>=1 and part<16
    status := kernel_make_device device kernel_bloc_device 65 16*(drive:0:number-"q":number)+part
  eif (name parse "sd" any:(var Str drive)) and drive:len=1 and drive>="a" and drive<="p"
    status := kernel_make_device device kernel_bloc_device 8 16*(drive:0:number-"a":number)
  eif (name parse "sd" any:(var Str drive)) and drive:len=1 and drive>="q" and drive<="z"
    status := kernel_make_device device kernel_bloc_device 65 16*(drive:0:number-"q":number)
  eif (name parse "scd" (var Int part)) and part>=0 and part<256
    status := kernel_make_device device kernel_bloc_device 11 part
  eif (name parse "sg" (var Int part)) and part>=0 and part<16
    status := kernel_make_device device kernel_character_device 21 part
  eif (name parse "pg" (var Int part)) and part>=0 and part<4
    status := kernel_make_device device kernel_character_device 97 part
  eif (name parse "fd" (var Int part)) and part>=0 and part<2
    status := kernel_make_device device kernel_bloc_device 2 part
  eif (name parse "md" (var Int part)) and part>=0 and part<16
    status := kernel_make_device device kernel_bloc_device 9 part
  eif (name parse "loop" (var Int part)) and part>=0 and part<8
    status := kernel_make_device device kernel_bloc_device 7 part

  eif (name parse "tty" (var Int n)) and n>=0 and n<10
    status := kernel_make_device device kernel_character_device 4 n
  eif (name parse "tty" any:(var Str twin) ) and twin:len=2 and ((twin:0>="a" and twin:0<="e") or (twin:0>="p" and twin:0<="z")) and ((twin:1>="0" and twin:1<="9") or (twin:1>="a" and twin:1<="f"))
    status := kernel_make_device device kernel_character_device 3 (shunt (twin:0>="a" and twin:0<="e") 176+16*(twin:0:number-"a":number) 16*(twin:0:number-"p":number))+(shunt (twin:1>="0" and twin:1<="9") twin:1:number-"0":number 10+twin:1:number-"a":number)
  eif (name parse "pty" any:(var Str twin) ) and twin:len=2 and ((twin:0>="a" and twin:0<="e") or (twin:0>="p" and twin:0<="z")) and ((twin:1>="0" and twin:1<="9") or (twin:1>="a" and twin:1<="f"))
    status := kernel_make_device device kernel_character_device 2 (shunt (twin:0>="a" and twin:0<="e") 176+16*(twin:0:number-"a":number) 16*(twin:0:number-"p":number))+(shunt (twin:1>="0" and twin:1<="9") twin:1:number-"0":number 10+twin:1:number-"a":number)
  eif (name parse "vcs" (var Int n)) and n>=0 and n<64
    status := kernel_make_device device kernel_character_device 7 n
  eif name="tty"
    status := kernel_make_device device kernel_character_device 5 0
  eif name="console"
    status := kernel_make_device device kernel_character_device 5 1

  eif name="mem"
    status := kernel_make_device device kernel_character_device 1 1
    file_rights device 0 15 0 3*8+7
  eif name="null"
    status := kernel_make_device device kernel_character_device 1 3 true
  eif name="zero"
    status := kernel_make_device device kernel_character_device 1 5
  eif name="random"
    status := kernel_make_device device kernel_character_device 1 8
  eif name="rtc"
    status := kernel_make_device device kernel_character_device 10 135
  eif (name parse "ram" (var Int i))  and i>=0 and i<=16
    status := kernel_make_device device kernel_bloc_device 1 i
  eif name="agpgart"
    status := kernel_make_device device kernel_character_device 10 175
  eif name="raw1394"
    status := kernel_make_device device kernel_character_device 171 0
  eif name="agpgart"
    status := kernel_make_device device kernel_character_device 10 175
  eif (name parse "fb" (var Int n)) and n>=0 and n<32
    status := kernel_make_device device kernel_character_device 29 n

  eif name="psaux"
    status := kernel_make_device device kernel_character_device 10 1
  eif name="mice"
    status := kernel_make_device device kernel_character_device 13 63
  eif (name parse "lp" (var Int i))  and i>=0 and i<=2
    status := kernel_make_device device kernel_character_device 6 i
  eif (name parse "ttyS" (var Int n)) and n>=0 and n<64
    status := kernel_make_device device kernel_character_device 4 64+n
  eif (name parse "fb" (var Int n)) and n>=0 and n<32
    status := kernel_make_device device kernel_character_device 29 n
  eif (name parse "ircomm" (var Int n)) and n>=0 and n<16
    status := kernel_make_device device kernel_character_device 161 n
  eif (name parse "irlpt" (var Int n)) and n>=0 and n<16
    status := kernel_make_device device kernel_character_device 161 16+n


  eif name="dsp"
    status := kernel_make_device device kernel_character_device 14 3
  eif (name parse "dsp" (var Int i)) and i>=1 and i<4
    status := kernel_make_device device kernel_character_device 14 3+i*16

  eif name="ppp"
    status := kernel_make_device device kernel_character_device 108 0
  eif (name parse "ippp" (var Int part)) and part>=0 and part<64
    status := kernel_make_device device kernel_character_device 45 128+part
  eif name="isdninfo"
    status := kernel_make_device device kernel_character_device 45 255
  eif name="isdnctrl"
    status := kernel_make_device device kernel_character_device 45 64
  eif (name parse "isdnctrl" (var Int part)) and part>=0 and part<64
    status := kernel_make_device device kernel_character_device 45 64+part

  else
    plugin device
      status := failure