/modules.c (899930b3b7369403bb99bbf253c2162d306b9c83) (1915 bytes) (mode 100644) (type blob)

//******************************************************************************
//*this code is protected by the GNU affero GPLv3
//*author:Sylvain BERTRAND <sylvain.bertrand AT gmail dot com>
//*                        <digital.ragnarok AT gmail dot com>
//******************************************************************************
#include <ulinux/compiler_types.h>
#include <ulinux/types.h>
#include <ulinux/sysc.h>

#include <ulinux/stat.h>
#include <ulinux/mmap.h>
#include <ulinux/error.h>
#include <ulinux/file.h>

#ifndef QUIET
#include <stdarg.h>
#include <ulinux/utils/ascii/string/vsprintf.h>
#endif

#include "globals.h"
#include "modules_list.h"

static void module_load(k_u8 *m)
{
  k_i fd=(k_i)sysc(open,3,m,K_O_RDONLY,0);
  if(K_ISERR(fd)){
    OUT("ERROR(%d):unable to open module file\n",fd);
    sysc(exit_group,1,-1);
  }

  struct k_stat m_stat;
  k_l r=sysc(fstat,2,fd,&m_stat);
  if(K_ISERR(r)){
    OUT("ERROR(%ld):unable to stat module file\n",r);
    sysc(exit_group,1,-1);
  }
  OUT("size=%lu...",m_stat.sz);

  k_l addr=sysc(mmap,6,0,m_stat.sz,K_PROT_READ,
                K_MAP_PRIVATE|K_MAP_POPULATE,fd,0);
  if(K_ISERR(addr)){
    OUT("ERROR(%ld):unable to mmap module file\n",addr);
    sysc(exit_group,1,-1);
  }
 
  r=sysc(init_module,3,addr,m_stat.sz,"");
  if(K_ISERR(r)){
    OUT("ERROR(%ld):unable init module\n",r);
    sysc(exit_group,1,-1);
  }

  do r=sysc(close,1,fd); while(r==-K_EINTR);
  if(K_ISERR(r)){
    OUT("ERROR(%ld):unable to close module file\n",r);
    sysc(exit_group,1,-1);
  }
  return;
}

void modules_load(void)
{
  k_u8 **m=modules_list;

  while(*m!=0){
    OUT(PRE "loading module '%s'...",*m);
	module_load(*m);
	OUTC("done\n");
    ++m;
  }

#ifdef SCSI_WAIT_SCAN
  k_l r=sysc(delete_module,1,"scsi_wait_scan");
  if(K_ISERR(r)){
    OUT(PRE "ERROR(%ld):unable to delete the scsi_wait_scan module\n",r);
    sysc(exit_group,1,-1);
  }
#endif
}


Mode Type Size Ref File
100644 blob 350 f04e1ce48fd9a513ac6327a17f79a88e6933aa8b README
100644 blob 64 fae48d3badf8b799435342a1a4372c319facc1af TODO
100644 blob 1163 2b6b3bf3a8b53f33c0e4f8f73493ac6c2932f88c conf.mk
100644 blob 715 736621ea6373728f5ea091cf7f0705225b93f7b6 globals.h
100644 blob 4729 b999a4585d9986f75b4df02ae8cce1452325e2d2 init.c
100644 blob 3400 2eebf4f8ecff7c8a054f0d18bc715b62866e2ad0 makefile
100644 blob 1915 899930b3b7369403bb99bbf253c2162d306b9c83 modules.c
100644 blob 406 f5e162a64baf80fef122ef374b138aa50fc4158b modules.h
100644 blob 3264 d0b3b3d53097117b7919f5b35936ad6f44a44dd0 ramfs.c
100644 blob 403 4e38d9f1f1c8c5235493322737469627277f86c4 ramfs.h
040000 tree - 411cf6aace0ae666b41cecc267da82828eba511d script
100644 blob 3358 6c62952dc3479ba202b797f412a2f203d58ca52b uevent.c
100644 blob 416 867f22d10d93effd2a58227deded6274f63ebcfd uevent.h
100644 blob 4158 cef85f6fdac6d626135a76df290eb774056b9532 uevents.c
100644 blob 463 233e58ec60a14a4fd0d984fb96fb70326ddb0654 uevents.h
040000 tree - f9fb6abe5603a4502f20c933c84e72feadcf2a88 ulinux
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/cinitramfs

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/cinitramfs

Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/cinitramfs

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main