A UNIX Command $cat hello.pl # Prints the message using two different delimeters. print “Hello, world!\n”; print qq=Did you say “Hello?”\n=; $perl hello.pl Hello, world! Did you say “Hello?” $ UNIX Explanation “print” is categorized under Input/Output Functions. Prints the message using two different delimeters. source : http://sandbox.mc.edu/~bennet/perl/leccode/index.html
Category Archives: Uncategorized
parameters tcp_retries2
A UNIX Parameter $cat /proc/sys/net/ipv4/tcp_retries2 15 $ Parameter Definition How many times to retry before killing alive TCP connection. RFC1122 says that the limit should be longer than 100 sec. It is too small number. The default value of 15 corresponds to ~ 13 – 30 minutes, depending on RTO. Parameter Code Internals snippet 1 …
First steps…
[BITS 32] [global start] [extern _k_main] ; this is in the c file start: call _k_main cli ; stop interrupts hlt ; halt the CPU
porting first steps asm code to GNU
.global start [extern _k_main] ; _start: call _k_main cli ; hlt ; $as –64 kernel_start.s kernel_start.s: Assembler messages: kernel_start.s:2: Error: junk at end of line, first unrecognized character is `[‘ $
linux 0.01 boot.s (copy from linux 0.01)
boot.s is loaded at 0x7c00 by the bios startup routines and moves itself out of the way to address 0x90000, and jumps there.It then loads the system at 0x10000, using BIOS interrupts. Thereafter it disables all interrupts,moves the system down to 0x0000 , changes to protected mode and calls the start of system. The system …
boot.s (copy) 0.01 kernel size and paging
currently system is atmost 8*65536 bytes long. This should be no problem even in the future. I want to keep it simple.This 512 size kernel kB kernel size should be enough – infact more would mean we should have to move not just these startup routines, but also do something about the cache memory(block I/O …
Continue reading “boot.s (copy) 0.01 kernel size and paging”
searching for call …
$grep -r setup * boot/head.s: call setup_idt boot/head.s: call setup_gdt boot/head.s: mov %ax,%es # reloaded in ‘setup_gdt’ boot/head.s: * setup_idt boot/head.s:setup_idt: boot/head.s: * setup_gdt boot/head.s:setup_gdt: boot/head.s: jmp setup_paging boot/head.s:setup_paging: include/linux/sys.h:extern int sys_setup(); include/linux/sys.h:fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read, include/unistd.h:#define __NR_setup 0 /* used only by init, to get system going */ init/main.c:static inline …
IDT interrupt descriptor table
The Interrupt Descriptor Table (IDT) is an array of 8 byte interrupt descriptors in memory devoted to specifying (at most) 256 interrupt service routines. The first 32 entries are reserved for processor exceptions, and any 16 of the remaining entries can be used for hardware interrupts. The rest are available for software interrupts. source : …
LEA instruction
The lea instruction places the address specified by its second operand into the register specified by its first operand. Note, the contents ofthe memory location are not loaded, only the effective address is computed and placed into the register. This is useful for obtaining a pointer into a memory region. source: http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
setup_idt …
setup_idt: lea ignore_int,%edx movl$ox00080000,%eax movw %dx,%ax movw $0x8E00,%dx