Showing posts with label Kernel Programming. Show all posts
Showing posts with label Kernel Programming. Show all posts

Thursday, March 5, 2009

Writing a Kernel in C

0 comments
Download----pdf----Writing a Kernel in C
Writing a Kernel in C
Tim Robinson


The C Programming Language
Tools
The Run-Time Library
OS-Specific Support
C++ in the Kernel

Friday, February 27, 2009

The Linux Kernel API

0 comments
Download ---- pdf---The Linux Kernel API
The Linux Kernel API

Table of Contents
The Linux VFS
The Directory Cache

d_invalidate
d_find_alias
prune_dcache
shrink_dcache_sb
have_submounts
shrink_dcache_parent
d_alloc
d_instantiate
d_alloc_root
d_lookup
d_validate
d_delete
d_rehash
d_move
__d_path
is_subdir
find_inode_number
d_drop
d_add
dget
d_unhashed
Inode Handling
__mark_inode_dirty
write_inode_now
clear_inode
invalidate_inodes
get_empty_inode
iunique
insert_inode_hash
remove_inode_hash
iput
bmap
update_atime
make_bad_inode
is_bad_inode
Registration and Superblocks
register_filesystem
unregister_filesystem
__wait_on_super
get_super
get_empty_super


Linux Networking
Socket Buffer Functions
skb_queue_empty
skb_get
kfree_skb
skb_cloned
skb_shared
skb_unshare
skb_peek
skb_peek_tail
skb_queue_len
__skb_queue_head
skb_queue_head
__skb_queue_tail
skb_queue_tail
__skb_dequeue
skb_dequeue
skb_insert
skb_append
skb_unlink
__skb_dequeue_tail
skb_dequeue_tail
skb_put
skb_push
skb_pull
skb_headroom
skb_tailroom
skb_reserve
skb_trim
skb_orphan
skb_queue_purge
__skb_queue_purge
dev_alloc_skb
skb_cow
skb_over_panic
skb_under_panic
alloc_skb
__kfree_skb
skb_clone
skb_copy
skb_copy_expand
Socket Filter
sk_run_filter


Network device support
Driver Support
init_etherdev
dev_add_pack
dev_remove_pack
__dev_get_by_name
dev_get_by_name
dev_get
__dev_get_by_index
dev_get_by_index
dev_alloc_name
dev_alloc
netdev_state_change
dev_load
dev_open
dev_close
register_netdevice_notifier
unregister_netdevice_notifier
dev_queue_xmit
netif_rx
net_call_rx_atomic
register_gifconf
netdev_set_master
dev_set_promiscuity
dev_set_allmulti
dev_ioctl
dev_new_index
register_netdevice
netdev_finish_unregister
unregister_netdevice
Based Network Cards
ei_open
ei_close
ei_interrupt
ethdev_init
NS_init
Synchronous PPP
sppp_input
sppp_close
sppp_open
sppp_reopen
sppp_change_mtu
sppp_do_ioctl
sppp_attach
sppp_detach


Module Loading
request_module


Hardware Interfaces
Interrupt Handling
disable_irq_nosync
disable_irq
enable_irq
probe_irq_mask
MTRR Handling
mtrr_add
mtrr_del
PCI Support Library
pci_find_slot
pci_find_device
pci_find_class
pci_find_parent_resource
pci_set_power_state
pci_enable_device
MCA Architecture
MCA Device Functions
mca_find_adapter
mca_find_unused_adapter
mca_read_stored_pos
mca_read_pos
mca_write_pos
mca_set_adapter_name
mca_set_adapter_procfn
mca_is_adapter_used
mca_mark_as_used
mca_mark_as_unused
mca_get_adapter_name
mca_isadapter
mca_isenabled
MCA Bus DMA
mca_enable_dma
mca_disable_dma
mca_set_dma_addr
mca_get_dma_addr
mca_set_dma_count
mca_get_dma_residue
mca_set_dma_io
mca_set_dma_mode


The Device File System
devfs_register
devfs_unregister
devfs_mk_symlink
devfs_mk_dir
devfs_find_handle
devfs_get_flags
devfs_get_maj_min
devfs_get_handle_from_inode
devfs_generate_path
devfs_get_ops
devfs_set_file_size
devfs_get_info
devfs_set_info
devfs_get_parent
devfs_get_first_child
devfs_get_next_sibling
devfs_auto_unregister
devfs_get_unregister_slave
devfs_register_chrdev
devfs_register_blkdev
devfs_unregister_chrdev
devfs_unregister_blkdev


Power Management
pm_register
pm_unregister
pm_unregister_all
pm_send
pm_send_all
pm_find


Miscellaneous Devices
misc_register
misc_deregister


VideoLinux
video_register_device
video_unregister_device


Sound Devices
register_sound_special
register_sound_mixer
register_sound_midi
register_sound_dsp
register_sound_synth
unregister_sound_special
unregister_sound_mixer
unregister_sound_midi
unregister_sound_dsp
unregister_sound_synth


x UART Driver
register_serial
unregister_serial


Z Support Library
z_interrupt
z_sync_open
z_sync_close
z_sync_dma_open
z_sync_dma_close
z_sync_txdma_open
z_sync_txdma_close
z_describe
z_init
z_shutdown
z_channel_load
z_null_rx
z_queue_xmit
z_get_stats

Linux Kernel Internals 2.4

0 comments
Download ----pdf---Linux Kernel Internals 2.4

Linux Kernel Internals


Table of Contents


Booting
Process and Interrupt Management
Virtual Filesystem (VFS)
Linux Page Cache
IPC mechanisms
Booting
Building the Linux Kernel Image
Booting: Overview
Booting: BIOS POST
Booting: bootsector and setup
Using LILO as a bootloader
High level initialisation
SMP Bootup on x
Freeing initialisation data and code
Processing kernel command line
Process and Interrupt Management
Task Structure and Process Table
Creation and termination of tasks and kernel threads
Linux Scheduler
Linux linked list implementation
Wait Queues
Kernel Timers
Bottom Halves
Task Queues
Tasklets
Softirqs
How System Calls Are Implemented on i Architecture?
Atomic Operations
Spinlocks, Read?write Spinlocks and Big?Reader Spinlocks
Semaphores and read/write Semaphores
Kernel Support for Loading Modules
Virtual Filesystem (VFS)
Inode Caches and Interaction with Dcache
Filesystem Registration/Unregistration
File Descriptor Management
File Structure Management
Superblock and Mountpoint Management
Example Virtual Filesystem: pipefs
Example Disk Filesystem: BFS
Execution Domains and Binary Formats
Linux Page Cache
IPC mechanisms
Semaphores
Semaphore System Call Interfaces
sys_semget()
sys_semctl()
sys_semop()
Non?blocking Semaphore Operations
Failing Semaphore Operations
Blocking Semaphore Operations
Semaphore Specific Support Structures
struct sem_array
struct sem
struct seminfo
struct semid_ds
struct sem_queue
struct sembuf
struct sem_undo
Semaphore Support Functions
newary()
freeary()
semctl_down()
IPC_RMID
IPC_SET
semctl_nolock()
IPC_INFO and SEM_INFO
SEM_STAT
semctl_main()
GETALL
SETALL
IPC_STAT
GETVAL
GETPID
GETNCNT
GETZCNT
SETVAL
count_semncnt()
count_semzcnt()
update_queue()
try_atomic_semop()
sem_revalidate()
freeundos()
alloc_undo()
sem_exit()
Message queues
Message System Call Interfaces
sys_msgget()
sys_msgctl()
IPC_INFO ( or MSG_INFO)
IPC_STAT ( or MSG_STAT)
IPC_SET
IPC_RMID
sys_msgsnd()
sys_msgrcv()
Message Specific Structures
struct msg_queue
struct msg_msg
struct msg_msgseg
struct msg_sender
struct msg_receiver
struct msqid_ds
struct msqid_ds
msg_setbuf
Message Support Functions
newque()
freeque()
ss_wakeup()
ss_add()
ss_del()
expunge_all()
load_msg()
store_msg()
free_msg()
convert_mode()
testmsg()
pipelined_send()
copy_msqid_to_user()
copy_msqid_from_user()
Shared Memory
Shared Memory System Call Interfaces
sys_shmget()
sys_shmctl()
IPC_INFO
SHM_INFO
SHM_STAT, IPC_STAT
SHM_LOCK, SHM_UNLOCK
IPC_RMID
IPC_SET
sys_shmat()
sys_shmdt()
Shared Memory Support Structures
struct shminfo
struct shm_info
struct shmid_kernel
struct shmid_ds
struct shmem_inode_info
Shared Memory Support Functions
newseg()
shm_get_stat()
shmem_lock()
shm_destroy()
shm_inc()
shm_close()
shmem_file_setup()
Linux IPC Primitives
Generic Linux IPC Primitives used with Semaphores, Messages,and Shared Memory
ipc_alloc()
ipc_addid()
ipc_rmid()
ipc_buildid()
ipc_checkid()
grow_ary()
ipc_findkey()
ipcperms()
ipc_lock()
ipc_unlock()
ipc_lockall()
ipc_unlockall()
ipc_get()
ipc_parse_version()
Generic IPC Structures used with Semaphores,Messages, and Shared Memory
struct kern_ipc_perm
struct ipc_ids
struct ipc_id