Patch title: Release 92 bulk changes
Abstract:
File: /linux/kernel/module.pli
Key:
    Removed line
    Added line
module "/pliant/language/stream.pli"
module "/pliant/admin/execute.pli"
module "/pliant/fullpliant/this_computer.pli"

gvar Float kernel_load_module_sleep := 5


function real_module name -> module
  arg Str name module
  module := this_computer:env:"kernel":"module":name
  if module=""
    module := name


function kernel_load_module name
  arg Str name
function kernel_load_module name options -> status
  arg Str name options ; arg ExtendedStatus status
  var Str module := real_module name
  (var Stream s) open "file:/proc/modules" in+safe
  while not s:atend
    if ((replace s:readline "-" "_") parse pattern:(replace module "-" "_") _ any)
      return
  if (execute "insmod "+module quiet)<>0
      return failure:"already loaded"
  if (execute "insmod "+module+(shunt options<>"" " "+options "") quiet)<>0
    status := failure "module not found"
    (var Stream s) open "file:/proc/sys/kernel/osrelease" in+safe
    var Str version := s readline
    (var Stream s) open "file:/lib/modules/"+version+"/modules.dep" in+safe
    while not s:atend
      var Str l := s readline
      while l<>"" and (l l:len-1 1)="/"
        l := (l 0 l:len-1)+s:readline
      if (l parse any:(var Str m) ":" any:(var Str d))
        var Str b := m
        b := b (b search_last "/" -1)+1 b:len
        b := b 0 (b search_last "." b:len)
        if (replace b "-" "_")=(replace module "-" "_")
          while d<>""
            if not (d parse any:(var Str d1) _ any:(var Str remain))
              d parse any:(var Str d1) ; remain := ""
            execute "insmod "+d1 quiet
            d1 := d1 (d1 search_last "/" -1)+1 d1:len
            d1 := d1 0 (d1 search "." d1:len)
            kernel_load_module d1 ""
            d := remain
          execute "insmod "+m quiet
          var Int err := execute "insmod "+m+(shunt options<>"" " "+options "") quiet
          status := shunt err=0 success failure:"failed to load the module"
          sleep kernel_load_module_sleep
     
function kernel_load_module name
  arg Str name
  kernel_load_module name ""

function kernel_unload_module name
  arg Str name
  execute "rmmod "+real_module:name quiet


export kernel_load_module kernel_unload_module
export kernel_load_module_sleep kernel_load_module kernel_unload_module