List of commits:
Subject Hash Author Date (UTC)
ulinux patterns: insert a kernel module ed879829ce6c44b77bddcd9c106a106261f47301 Sylvain BERTRAND 2011-12-26 21:29:33
ulinux dir_parse pattern 63cc7acc186efc291a76255e97d86e80901174e5 Sylvain BERTRAND 2011-12-26 02:24:55
ulinux improvements and more patterns a458c52301d3a34e8b51794fea7c1cb06c1c34f8 Sylvain BERTRAND 2011-12-22 22:09:06
ulinux patterns:network server 60c167bcd530f95d0a57189035620c3bc80f1e34 Sylvain BERTRAND 2011-12-20 00:39:56
ulinux cleanup and samples 92c893f28ef42f11943c0bf80a037a5b5f34ebef Sylvain BERTRAND 2011-12-16 01:51:22
uevent listener 55657699f291575139858aec466340e7624cd66a Sylvain BERTRAND 2011-12-15 18:01:06
uevent monitor e241bd4db4af8510902a5c606eee0e1e2dbdecda Sylvain BERTRAND 2011-12-13 00:37:45
block signals 91772917669645b5634563d0c06e361c87cf3e84 Sylvain BERTRAND 2011-12-09 17:04:34
initial commit 5310fde2d021e3505f8f1d5d9091726c236967ec Sylvain BERTRAND 2011-12-07 11:29:18
Commit ed879829ce6c44b77bddcd9c106a106261f47301 - ulinux patterns: insert a kernel module
Author: Sylvain BERTRAND
Author date (UTC): 2011-12-26 21:29
Committer name: Sylvain BERTRAND
Committer date (UTC): 2011-12-26 21:29
Parent(s): 63cc7acc186efc291a76255e97d86e80901174e5
Signing key:
Tree: 63078cad768eb386779bbe4d194815c40640c357
File Lines added Lines deleted
ulinux/patterns/INDEX 6 0
ulinux/patterns/dir_parse/dir_parse.c 1 1
ulinux/patterns/insmod/insmod.c 63 0
ulinux/patterns/insmod/makefile 5 5
File ulinux/patterns/INDEX changed (mode: 100644) (index 8a67160..c97a4c0)
1 1 o args o args
2 2 use of command line arguments use of command line arguments
3 3
4 o dir_parse
5 parsing members of a directory and recurse
6
4 7 o epoll: o epoll:
5 8 use of epoll with signalfd use of epoll with signalfd
6 9
10 o insmod:
11 load and init a kernel module
12
7 13 o network_server o network_server
8 14 o pre-fork_socket_unix_tcp: o pre-fork_socket_unix_tcp:
9 15 a TCP/IPv4 network server with pre-fork for connexion processing. Connexion a TCP/IPv4 network server with pre-fork for connexion processing. Connexion
File ulinux/patterns/dir_parse/dir_parse.c changed (mode: 100644) (index 1b22dfd..38853ab)
... ... static void dout(struct k_dirent64 *d)
41 41 POUT("%20lu %20ld %2u ",d->ino,d->off,d->type,d->name); POUT("%20lu %20ld %2u ",d->ino,d->off,d->type,d->name);
42 42 k_u i=depth; k_u i=depth;
43 43 while(i--) POUTC(" "); while(i--) POUTC(" ");
44 POUT("%s\n",d->name);//XXX:ugly-->we already have the string size
44 POUT("%s\n",d->name);
45 45 } }
46 46
47 47 #define DIRENTS_BUF_SZ 8192 #define DIRENTS_BUF_SZ 8192
File ulinux/patterns/insmod/insmod.c added (mode: 100644) (index 0000000..480855d)
1 #include <stdarg.h>
2 #include <ulinux/compiler_types.h>
3 #include <ulinux/sysc.h>
4 #include <ulinux/types.h>
5 #include <ulinux/error.h>
6 #include <ulinux/args.h>
7 #include <ulinux/file.h>
8 #include <ulinux/stat.h>
9 #include <ulinux/mmap.h>
10
11 #include <ulinux/utils/mem.h>
12 #include <ulinux/utils/ascii/string/vsprintf.h>
13
14 #define DPRINTF_BUF_SZ 1024
15 static k_u8 *dprintf_buf;
16
17 #define PERRC(s) {k_l rl;do{rl=sysc(write,3,2,s,sizeof(s));}\
18 while(rl==-K_EINTR||rl==-K_EAGAIN);}
19 #define PERR(f,...) u_a_dprintf(2,dprintf_buf,DPRINTF_BUF_SZ,(k_u8*)f,\
20 ##__VA_ARGS__)
21 #define POUT(f,...) u_a_dprintf(1,dprintf_buf,DPRINTF_BUF_SZ,(k_u8*)f,\
22 __VA_ARGS__)
23 #define POUTC(s) {k_l rl;do{rl=sysc(write,3,1,s,sizeof(s));}\
24 while(rl==-K_EINTR||rl==-K_EAGAIN);}
25
26 void start(k_i argc,k_u8 **argv)
27 {
28 k_u8 _dprintf_buf[DPRINTF_BUF_SZ];
29 dprintf_buf=&_dprintf_buf[0];
30
31 if(argc!=2){
32 PERR("ERROR:wrong number of command arguments(%d)\n",argc);
33 sysc(exit_group,1,-1);
34 }
35
36 k_i fd=sysc(open,3,argv[1],K_O_RDONLY,0);
37 if(K_ISERR(fd)){
38 PERR("ERROR(%ld):unable to open module %s\n",fd,argv[1]);
39 sysc(exit_group,1,-1);
40 }
41
42 struct k_stat m_stat;
43 k_l r=sysc(fstat,2,fd,&m_stat);
44 if(K_ISERR(r)){
45 PERR("ERROR(%ld):unable to stat module\n",r);
46 sysc(exit_group,1,-1);
47 }
48 POUT("size=%lu\n",m_stat.st_size);
49
50 k_l addr=sysc(mmap,6,0,m_stat.st_size,K_PROT_READ,
51 K_MAP_PRIVATE|K_MAP_POPULATE,fd,0);
52 if(K_ISERR(addr)){
53 PERR("ERROR(%ld):unable to mmap module file\n",addr);
54 sysc(exit_group,1,-1);
55 }
56
57 r=sysc(init_module,3,addr,m_stat.st_size,"");
58 if(K_ISERR(r)){
59 PERR("ERROR(%ld):unable init module\n",r);
60 sysc(exit_group,1,-1);
61 }
62 sysc(exit_group,1,0);
63 }
File ulinux/patterns/insmod/makefile copied from file ulinux/patterns/dir_parse/makefile (similarity 76%) (mode: 100644) (index 4210853..1492e45)
2 2
3 3 ARCH?=$(shell uname -m | sed -e s/i.86/i386/ -e s/parisc64/parisc/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/sh.*/sh/) ARCH?=$(shell uname -m | sed -e s/i.86/i386/ -e s/parisc64/parisc/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/sh.*/sh/)
4 4
5 dir_parse:dir_parse.c ../../../ulinux/arch
5 insmod:insmod.c ../../../ulinux/arch
6 6 gcc -Wall -Wextra -std=gnu99 -O3 -march=native -fverbose-asm -I../../.. -S \ gcc -Wall -Wextra -std=gnu99 -O3 -march=native -fverbose-asm -I../../.. -S \
7 7 ../../arch/utils/mem.c -o mem.s ../../arch/utils/mem.c -o mem.s
8 8 as mem.s -o mem.o as mem.s -o mem.o
 
... ... dir_parse:dir_parse.c ../../../ulinux/arch
14 14 as string.s -o string.o as string.s -o string.o
15 15 as ../../arch/args.s -o args.o as ../../arch/args.s -o args.o
16 16 gcc -Wall -Wextra -std=gnu99 -O3 -march=native -fverbose-asm -I../../.. -S \ gcc -Wall -Wextra -std=gnu99 -O3 -march=native -fverbose-asm -I../../.. -S \
17 dir_parse.c -o dir_parse.s
18 as dir_parse.s -o dir_parse.o
19 ld -O -nostdlib -Bstatic --strip-all dir_parse.o args.o string.o mem.o vsprintf.o --output dir_parse
17 insmod.c -o insmod.s
18 as insmod.s -o insmod.o
19 ld -O -nostdlib -Bstatic --strip-all insmod.o args.o string.o mem.o vsprintf.o --output insmod
20 20
21 21 ../../../ulinux/arch: ../../../ulinux/arch:
22 22 ln -s archs/$(ARCH) ../../../ulinux/arch ln -s archs/$(ARCH) ../../../ulinux/arch
23 23
24 24 clean: clean:
25 -rm -f ../../../ulinux/arch dir_parse.s dir_parse.o dir_parse \
25 -rm -f ../../../ulinux/arch insmod.s insmod.o insmod \
26 26 mem.s mem.o \ mem.s mem.o \
27 27 string.s string.o \ string.s string.o \
28 28 vsprintf.s vsprintf.o \ vsprintf.s vsprintf.o \
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