This page annotates the changes in linux-libc-2.6 2.6.26.
Contents
- asm-alpha
- asm-arm
- asm-generic
- asm-ia64
- asm-mips
- asm-parisc
- asm-powerpc
- asm-s390
- asm-sparc
- asm-sparc64
- asm-x86
-
linux
- linux/a.out.h
- linux/atm.h, linux/atm_tcp.h
- linux/audit.h
- linux/byteorder/generic.h
- linux/dlmconstants.h
- linux/dlm_device.h
- linux/dlm.h
- linux/dlm_plock.h
- linux/dvb/dmx.h
- linux/elf.h
- linux/filter.h
- linux/fs.h
- linux/fuse.h
- linux/hdsmart.h
- linux/hid.h, linux/hidraw.h
- linux/if_bridge.h
- linux/if_tunnel.h
- linux/if_wanpipe.h
- linux/in6.h
- linux/input.h
- linux/ipv6.h
- linux/isdn.h
- linux/keyctl.h
- linux/kvm.h
- linux/lock_dlm_plock.h
- linux/mempolicy.h
- linux/meye.h
- linux/mroute6.h
- linux/msdos_fs.h
- linux/msg.h
- linux/mtio.h
- linux/nbd.h
- linux/netdevice.h
- linux/netfilter/nfnetlink_conntrack.h
- linux/netfilter/xt_sctp.h
- linux/netfilter_arp/arp_tables.h
- linux/netfilter_ipv4.h
- linux/net.h
- linux/nfs3.h
- linux/nl80211.h
- linux/pci_regs.h
- linux/phantom.h
- linux/pim.h
- linux/prctl.h
- linux/resource.h
- linux/rtnetlink.h
- linux/serial_core.h
- linux/serio.h
- linux/synclink.h
- linux/timex.h
- linux/usb/cdc.h
- linux/usb/ch9.h
- linux/usbdevice_fs.h
- linux/videodev2.h
- linux/virtio_9p.h, linux/virtio_balloon.h
- linux/virtio_blk.h, linux/virtio_config.h
- linux/virtio_console.h
- linux/virtio_net.h
- linux/virtio_pci.h, linux/virtio_ring.h
- linux/wireless.h
- linux/xfrm.h
- mtd
asm-alpha
asm-alpha/byteorder.h
Use correct keyword.
asm-alpha/param.h
HZ change already in 2.6.25.
asm-alpha/types.h
Parts moved to asm-generic/int-l64.h.
asm-arm
asm-arm/hwcap.h
New definition HWCAP_THUMBEE
asm-arm/types.h
Parts moved to asm-generic/int-ll64.h.
asm-arm/unistd.h
diff -U 1 -Nwr 2.6.25/asm-arm/unistd.h 2.6.26/asm-arm/unistd.h --- 2.6.25/asm-arm/unistd.h 2008-07-11 12:23:48.000000000 +0200 +++ 2.6.26/asm-arm/unistd.h 2008-07-11 12:22:33.000000000 +0200 @@ -378,5 +378,7 @@ #define __NR_signalfd (__NR_SYSCALL_BASE+349) -#define __NR_timerfd (__NR_SYSCALL_BASE+350) +#define __NR_timerfd_create (__NR_SYSCALL_BASE+350) #define __NR_eventfd (__NR_SYSCALL_BASE+351) #define __NR_fallocate (__NR_SYSCALL_BASE+352) +#define __NR_timerfd_settime (__NR_SYSCALL_BASE+353) +#define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354)
asm-generic
asm-generic/int-l64.h
New file.
asm-generic/int-ll64.h
New file.
asm-ia64
asm-ia64/gcc_intrin.h
New definitions ia64_*
asm-ia64/kvm.h
Support added.
asm-ia64/types.h
Parts moved to asm-generic/int-l64.h and asm-generic/int-ll64.h.
asm-mips
asm-mips/types.h
Parts moved to asm-generic/int-l64.h and asm-generic/int-ll64.h.
asm-parisc
asm-parisc/ioctl.h
Parts moved to asm-generic/ioctl.h
asm-parisc/ioctls.h
New definitions TCGET*, TCSET*.
asm-parisc/termbits.h
New definition BOTHER, IBSHIFT
asm-parisc/types.h
Parts moved to asm-generic/int-ll64.h.
asm-powerpc
asm-powerpc/kvm.h
Support added.
asm-s390
asm-s390/kvm.h
Support added.
asm-s390/types.h
Parts moved to asm-generic/int-l64.h and asm-generic/int-ll64.h.
asm-sparc
asm-sparc/a.out.h
Removed. Part of SunOS support, Linux/Sparc never supported a.out binaries. Ignored.
diff -U 1 -Nwr 2.6.25/asm-sparc/a.out.h 2.6.26/asm-sparc/a.out.h --- 2.6.25/asm-sparc/a.out.h 2008-07-11 12:23:56.000000000 +0200 +++ 2.6.26/asm-sparc/a.out.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,97 +0,0 @@ -#ifndef __SPARC_A_OUT_H__ -#define __SPARC_A_OUT_H__ - -#define SPARC_PGSIZE 0x2000 /* Thanks to the sun4 architecture... */ -#define SEGMENT_SIZE SPARC_PGSIZE /* whee... */ - -#ifndef __ASSEMBLY__ - -struct exec { - unsigned char a_dynamic:1; /* A __DYNAMIC is in this image */ - unsigned char a_toolversion:7; - unsigned char a_machtype; - unsigned short a_info; - unsigned int a_text; /* length of text, in bytes */ - unsigned int a_data; /* length of data, in bytes */ - unsigned int a_bss; /* length of bss, in bytes */ - unsigned int a_syms; /* length of symbol table, in bytes */ - unsigned int a_entry; /* where program begins */ - unsigned int a_trsize; - unsigned int a_drsize; -}; - -#endif /* !__ASSEMBLY__ */ - -/* Where in the file does the text information begin? */ -#define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? 0 : sizeof (struct exec)) - -/* Where do the Symbols start? */ -#define N_SYMOFF(x) (N_TXTOFF(x) + (x).a_text + \ - (x).a_data + (x).a_trsize + \ - (x).a_drsize) - -/* Where does text segment go in memory after being loaded? */ -#define N_TXTADDR(x) (unsigned long)(((N_MAGIC(x) == ZMAGIC) && \ - ((x).a_entry < SPARC_PGSIZE)) ? \ - 0 : SPARC_PGSIZE) - -/* And same for the data segment.. */ -#define N_DATADDR(x) (N_MAGIC(x)==OMAGIC ? \ - (N_TXTADDR(x) + (x).a_text) \ - : (unsigned long) (_N_SEGMENT_ROUND (_N_TXTENDADDR(x)))) - -#define N_TRSIZE(a) ((a).a_trsize) -#define N_DRSIZE(a) ((a).a_drsize) -#define N_SYMSIZE(a) ((a).a_syms) - -#ifndef __ASSEMBLY__ - -/* - * Sparc relocation types - */ -enum reloc_type -{ - RELOC_8, - RELOC_16, - RELOC_32, /* simplest relocs */ - RELOC_DISP8, - RELOC_DISP16, - RELOC_DISP32, /* Disp's (pc-rel) */ - RELOC_WDISP30, - RELOC_WDISP22, /* SR word disp's */ - RELOC_HI22, - RELOC_22, /* SR 22-bit relocs */ - RELOC_13, - RELOC_LO10, /* SR 13&10-bit relocs */ - RELOC_SFA_BASE, - RELOC_SFA_OFF13, /* SR S.F.A. relocs */ - RELOC_BASE10, - RELOC_BASE13, - RELOC_BASE22, /* base_relative pic */ - RELOC_PC10, - RELOC_PC22, /* special pc-rel pic */ - RELOC_JMP_TBL, /* jmp_tbl_rel in pic */ - RELOC_SEGOFF16, /* ShLib offset-in-seg */ - RELOC_GLOB_DAT, - RELOC_JMP_SLOT, - RELOC_RELATIVE /* rtld relocs */ -}; - -/* - * Format of a relocation datum. - */ -struct relocation_info /* used when header.a_machtype == M_SPARC */ -{ - unsigned int r_address; /* relocation addr */ - unsigned int r_index:24; /* segment index or symbol index */ - unsigned int r_extern:1; /* if F, r_index==SEG#; if T, SYM idx */ - unsigned int r_pad:2; /* <unused> */ - enum reloc_type r_type:5; /* type of relocation to perform */ - int r_addend; /* addend for relocation value */ -}; - -#define N_RELOCATION_INFO_DECLARED 1 - -#endif /* !(__ASSEMBLY__) */ - -#endif /* __SPARC_A_OUT_H__ */
asm-sparc/ioctls.h, asm-sparc/mman.h, asm-sparc/pconf.h, asm-sparc/socket.h, asm-sparc/termios.h
Removed SunOS specific definitions. Ignored.
diff -U 1 -Nwr 2.6.25/asm-sparc/ioctls.h 2.6.26/asm-sparc/ioctls.h --- 2.6.25/asm-sparc/ioctls.h 2008-07-11 12:23:56.000000000 +0200 +++ 2.6.26/asm-sparc/ioctls.h 2008-07-11 12:22:41.000000000 +0200 @@ -45,4 +45,2 @@ #define TIOCCONS _IO('t', 36) -#define __TIOCSSIZE _IOW('t', 37, struct sunos_ttysize) /* SunOS Specific */ -#define __TIOCGSIZE _IOR('t', 38, struct sunos_ttysize) /* SunOS Specific */ #define TIOCGSOFTCAR _IOR('t', 100, int) diff -U 1 -Nwr 2.6.25/asm-sparc/mman.h 2.6.26/asm-sparc/mman.h --- 2.6.25/asm-sparc/mman.h 2008-07-11 12:23:56.000000000 +0200 +++ 2.6.26/asm-sparc/mman.h 2008-07-11 12:22:41.000000000 +0200 @@ -24,15 +23,2 @@ -/* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system - * XXX calls. - */ - -/* SunOS sys_mctl() stuff... */ -#define MC_SYNC 1 /* Sync pages in memory with storage (usu. a file) */ -#define MC_LOCK 2 /* Lock pages into core ram, do not allow swapping of them */ -#define MC_UNLOCK 3 /* Unlock pages locked via previous mctl() with MC_LOCK arg */ -#define MC_LOCKAS 5 /* Lock an entire address space of the calling process */ -#define MC_UNLOCKAS 6 /* Unlock entire address space of calling process */ - -#define MADV_FREE 0x5 /* (Solaris) contents can be freed */ - diff -U 1 -Nwr 2.6.25/asm-sparc/pconf.h 2.6.26/asm-sparc/pconf.h --- 2.6.25/asm-sparc/pconf.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc/pconf.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,25 +0,0 @@ -/* $Id: pconf.h,v 1.3 1996/04/25 06:13:25 davem Exp $ - * pconf.h: pathconf() and fpathconf() defines for SunOS - * system call compatibility. - * - * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) - */ - -#ifndef _SPARC_PCONF_H -#define _SPARC_PCONF_H - -#include <linux/fs.h> -#include <linux/limits.h> - -#define _PCONF_LINK 1 /* Max number of links to an object */ -#define _PCONF_CANON 2 /* TTY input buffer line size */ -#define _PCONF_INPUT 3 /* Biggest packet a tty can imbibe at once */ -#define _PCONF_NAME 4 /* Filename length max */ -#define _PCONF_PATH 5 /* Max size of a pathname */ -#define _PCONF_PIPE 6 /* Buffer size for a pipe */ -#define _PCONF_CHRESTRICT 7 /* Can only root chown files? */ -#define _PCONF_NOTRUNC 8 /* Are pathnames truncated if too big? */ -#define _PCONF_VDISABLE 9 /* Magic char to disable special tty chars */ -#define _PCONF_MAXPCONF 9 - -#endif /* !(_SPARC_PCONF_H) */ diff -U 1 -Nwr 2.6.25/asm-sparc/socket.h 2.6.26/asm-sparc/socket.h --- 2.6.25/asm-sparc/socket.h 2008-07-11 12:23:56.000000000 +0200 +++ 2.6.26/asm-sparc/socket.h 2008-07-11 12:22:41.000000000 +0200 @@ -26,5 +25,2 @@ -/* wha!??? */ -#define SO_DONTLINGER (~SO_LINGER) /* Older SunOS compat. hack */ - #define SO_SNDBUF 0x1001 diff -U 1 -Nwr 2.6.25/asm-sparc/termios.h 2.6.26/asm-sparc/termios.h --- 2.6.25/asm-sparc/termios.h 2008-07-11 12:23:56.000000000 +0200 +++ 2.6.26/asm-sparc/termios.h 2008-07-11 12:22:41.000000000 +0200 @@ -35,7 +34,2 @@ -struct sunos_ttysize { - int st_lines; /* Lines on the terminal */ - int st_columns; /* Columns on the terminal */ -}; - struct winsize {
asm-sparc/types.h
Parts moved to asm-generic/int-ll64.h.
asm-sparc64
asm-sparc64/a.out.h
Removed. Part of SunOS support, Linux/Sparc never supported a.out binaries. Ignored.
diff -U 1 -Nwr 2.6.25/asm-sparc64/a.out.h 2.6.26/asm-sparc64/a.out.h --- 2.6.25/asm-sparc64/a.out.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/a.out.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include <asm-sparc/a.out.h>
asm-sparc64/ioctls.h, asm-sparc64/mman.h, asm-sparc64/pconf.h
Removed SunOS specific definitions. Ignored.
diff -U 1 -Nwr 2.6.25/asm-sparc64/ioctls.h 2.6.26/asm-sparc64/ioctls.h --- 2.6.25/asm-sparc64/ioctls.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/ioctls.h 2008-07-11 12:22:41.000000000 +0200 @@ -46,4 +45,2 @@ #define TIOCCONS _IO('t', 36) -#define __TIOCSSIZE _IOW('t', 37, struct sunos_ttysize) /* SunOS Specific */ -#define __TIOCGSIZE _IOR('t', 38, struct sunos_ttysize) /* SunOS Specific */ #define TIOCGSOFTCAR _IOR('t', 100, int) diff -U 1 -Nwr 2.6.25/asm-sparc64/mman.h 2.6.26/asm-sparc64/mman.h --- 2.6.25/asm-sparc64/mman.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/mman.h 2008-07-11 12:22:41.000000000 +0200 @@ -24,15 +23,2 @@ -/* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system - * XXX calls. - */ - -/* SunOS sys_mctl() stuff... */ -#define MC_SYNC 1 /* Sync pages in memory with storage (usu. a file) */ -#define MC_LOCK 2 /* Lock pages into core ram, do not allow swapping of them */ -#define MC_UNLOCK 3 /* Unlock pages locked via previous mctl() with MC_LOCK arg */ -#define MC_LOCKAS 5 /* Lock an entire address space of the calling process */ -#define MC_UNLOCKAS 6 /* Unlock entire address space of calling process */ - -#define MADV_FREE 0x5 /* (Solaris) contents can be freed */ - diff -U 1 -Nwr 2.6.25/asm-sparc64/pconf.h 2.6.26/asm-sparc64/pconf.h --- 2.6.25/asm-sparc64/pconf.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/pconf.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,25 +0,0 @@ -/* $Id: pconf.h,v 1.1 1996/12/02 00:09:10 davem Exp $ - * pconf.h: pathconf() and fpathconf() defines for SunOS - * system call compatibility. - * - * Copyright (C) 1995, 1996 David S. Miller (davem@caip.rutgers.edu) - */ - -#ifndef _SPARC64_PCONF_H -#define _SPARC64_PCONF_H - -#include <linux/fs.h> -#include <linux/limits.h> - -#define _PCONF_LINK 1 /* Max number of links to an object */ -#define _PCONF_CANON 2 /* TTY input buffer line size */ -#define _PCONF_INPUT 3 /* Biggest packet a tty can imbibe at once */ -#define _PCONF_NAME 4 /* Filename length max */ -#define _PCONF_PATH 5 /* Max size of a pathname */ -#define _PCONF_PIPE 6 /* Buffer size for a pipe */ -#define _PCONF_CHRESTRICT 7 /* Can only root chown files? */ -#define _PCONF_NOTRUNC 8 /* Are pathnames truncated if too big? */ -#define _PCONF_VDISABLE 9 /* Magic char to disable special tty chars */ -#define _PCONF_MAXPCONF 9 - -#endif /* !(_SPARC64_PCONF_H) */
asm-sparc64/ptrace.h
Replaced fprs by magic. Is not used at all by strace and gdb. Ignored.
diff -U 1 -Nwr 2.6.25/asm-sparc64/ptrace.h 2.6.26/asm-sparc64/ptrace.h --- 2.6.25/asm-sparc64/ptrace.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/ptrace.h 2008-07-11 12:22:41.000000000 +0200 @@ -10,2 +9,7 @@ +/* This magic value must have the low 9 bits clear, + * as that is where we encode the %tt value, see below. + */ +#define PT_REGS_MAGIC 0x57ac6c00 + #ifndef __ASSEMBLY__ @@ -20,13 +24,22 @@ unsigned int y; - unsigned int fprs; -}; -struct pt_regs32 { - unsigned int psr; - unsigned int pc; - unsigned int npc; - unsigned int y; - unsigned int u_regs[16]; /* globals and ins */ + /* We encode a magic number, PT_REGS_MAGIC, along + * with the %tt (trap type) register value at trap + * entry time. The magic number allows us to identify + * accurately a trap stack frame in the stack + * unwinder, and the %tt value allows us to test + * things like "in a system call" etc. for an arbitray + * process. + * + * The PT_REGS_MAGIC is choosen such that it can be + * loaded completely using just a sethi instruction. + */ + unsigned int magic; }; +static __inline__ int pt_regs_trap_type(struct pt_regs *regs) +{ + return regs->magic & 0x1ff; +} + static __inline__ bool pt_regs_is_syscall(struct pt_regs *regs) @@ -41,2 +54,10 @@ +struct pt_regs32 { + unsigned int psr; + unsigned int pc; + unsigned int npc; + unsigned int y; + unsigned int u_regs[16]; /* globals and ins */ +}; + #define UREG_G0 0 @@ -140,3 +161,3 @@ #define PT_V9_Y 0x98 -#define PT_V9_FPRS 0x9c +#define PT_V9_MAGIC 0x9c #define PT_TSTATE PT_V9_TSTATE
asm-sparc64/socket.h, asm-sparc64/termios.h
Removed SunOS specific definitions. Ignored.
diff -U 1 -Nwr 2.6.25/asm-sparc64/socket.h 2.6.26/asm-sparc64/socket.h --- 2.6.25/asm-sparc64/socket.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/socket.h 2008-07-11 12:22:41.000000000 +0200 @@ -26,5 +25,2 @@ -/* wha!??? */ -#define SO_DONTLINGER (~SO_LINGER) /* Older SunOS compat. hack */ - #define SO_SNDBUF 0x1001 diff -U 1 -Nwr 2.6.25/asm-sparc64/termios.h 2.6.26/asm-sparc64/termios.h --- 2.6.25/asm-sparc64/termios.h 2008-07-11 12:23:55.000000000 +0200 +++ 2.6.26/asm-sparc64/termios.h 2008-07-11 12:22:41.000000000 +0200 @@ -35,7 +34,2 @@ -struct sunos_ttysize { - int st_lines; /* Lines on the terminal */ - int st_columns; /* Columns on the terminal */ -}; - struct winsize {
asm-sparc64/types.h
Parts moved to asm-generic/int-l64.h.
asm-x86
asm-x86/boot.h, asm-x86/bootparam.h
Updates boot protocol. New definitions BOOT_*, SETUP_NONE, setup_data
asm-x86/byteorder.h
Keyword update.
asm-x86/kvm.h
New definitions. kvm_*, KVM_*
asm-x86/msr-index.h
New definitions MSR_*
asm-x86/processor-flags.h
New file.
asm-x86/setup.h
New definition vsmp_init.
asm-x86/types.h
Parts moved to asm-generic/int-ll64.h.
asm-x86/vm86.h
Fixed.
diff -U 1 -Nwr 2.6.25/asm-x86/vm86.h 2.6.26/asm-x86/vm86.h --- 2.6.25/asm-x86/vm86.h 2008-07-11 12:23:57.000000000 +0200 +++ 2.6.26/asm-x86/vm86.h 2008-07-11 12:22:43.000000000 +0200 @@ -14,15 +14,9 @@ -#define TF_MASK 0x00000100 -#define IF_MASK 0x00000200 -#define IOPL_MASK 0x00003000 -#define NT_MASK 0x00004000 +#include <asm/processor-flags.h> + #ifdef CONFIG_VM86 -#define VM_MASK 0x00020000 +#define X86_VM_MASK X86_EFLAGS_VM #else -#define VM_MASK 0 /* ignored */ +#define X86_VM_MASK 0 /* No VM86 support */ #endif -#define AC_MASK 0x00040000 -#define VIF_MASK 0x00080000 /* virtual interrupt flag */ -#define VIP_MASK 0x00100000 /* virtual interrupt pending */ -#define ID_MASK 0x00200000
linux
linux/a.out.h
New file.
linux/atm.h, linux/atm_tcp.h
Use kernel types
linux/audit.h
Update definition AUDIT_MAX_KEY_LEN, new definition AUDIT_FILETYPE.
diff -U 1 -Nwr 2.6.25/linux/audit.h 2.6.26/linux/audit.h --- 2.6.25/linux/audit.h 2008-07-11 12:23:43.000000000 +0200 +++ 2.6.26/linux/audit.h 2008-07-11 12:22:27.000000000 +0200 @@ -148,3 +148,3 @@ #define AUDIT_MAX_FIELDS 64 -#define AUDIT_MAX_KEY_LEN 32 +#define AUDIT_MAX_KEY_LEN 256 #define AUDIT_BITMASK_SIZE 64 @@ -211,2 +211,3 @@ #define AUDIT_DIR 107 +#define AUDIT_FILETYPE 108
linux/byteorder/generic.h
Remove comment only file.
linux/dlmconstants.h
New definitions DLM_*
linux/dlm_device.h
Removed definition MAX_LS_NAME_LEN. Not used by only possible user redhat-cluster.
linux/dlm.h
Definition moved to linux/dlmconstants.h, already included. Types update.
linux/dlm_plock.h
New file.
linux/dvb/dmx.h
New definition DMX_OUT_TSDEMUX_TAP
linux/elf.h
Don't use magic constant.
linux/filter.h
New definition: SKF_AD_*.
linux/fs.h
New definition SWRITE_SYNC.
linux/fuse.h
New definition FUSE_BIG_WRITES.
linux/hdsmart.h
Removed file. Defines hardware interface. Fixed.
diff -U 1 -Nwr 2.6.25/linux/hdsmart.h 2.6.26/linux/hdsmart.h --- 2.6.25/linux/hdsmart.h 2008-07-11 12:23:44.000000000 +0200 +++ 2.6.26/linux/hdsmart.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,124 +0,0 @@ -/* - * linux/include/linux/hdsmart.h - * - * Copyright (C) 1999-2000 Michael Cornwell <cornwell@acm.org> - * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * You should have received a copy of the GNU General Public License - * (for example /usr/src/linux/COPYING); if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef _LINUX_HDSMART_H -#define _LINUX_HDSMART_H - -#define OFFLINE_FULL_SCAN 0 -#define SHORT_SELF_TEST 1 -#define EXTEND_SELF_TEST 2 -#define SHORT_CAPTIVE_SELF_TEST 129 -#define EXTEND_CAPTIVE_SELF_TEST 130 - -/* smart_attribute is the vendor specific in SFF-8035 spec */ -typedef struct ata_smart_attribute_s { - unsigned char id; - unsigned short status_flag; - unsigned char normalized; - unsigned char worse_normal; - unsigned char raw[6]; - unsigned char reserv; -} __attribute__ ((packed)) ata_smart_attribute_t; - -/* smart_values is format of the read drive Atrribute command */ -typedef struct ata_smart_values_s { - unsigned short revnumber; - ata_smart_attribute_t vendor_attributes [30]; - unsigned char offline_data_collection_status; - unsigned char self_test_exec_status; - unsigned short total_time_to_complete_off_line; - unsigned char vendor_specific_366; - unsigned char offline_data_collection_capability; - unsigned short smart_capability; - unsigned char errorlog_capability; - unsigned char vendor_specific_371; - unsigned char short_test_completion_time; - unsigned char extend_test_completion_time; - unsigned char reserved_374_385 [12]; - unsigned char vendor_specific_386_509 [125]; - unsigned char chksum; -} __attribute__ ((packed)) ata_smart_values_t; - -/* Smart Threshold data structures */ -/* Vendor attribute of SMART Threshold */ -typedef struct ata_smart_threshold_entry_s { - unsigned char id; - unsigned char normalized_threshold; - unsigned char reserved[10]; -} __attribute__ ((packed)) ata_smart_threshold_entry_t; - -/* Format of Read SMART THreshold Command */ -typedef struct ata_smart_thresholds_s { - unsigned short revnumber; - ata_smart_threshold_entry_t thres_entries[30]; - unsigned char reserved[149]; - unsigned char chksum; -} __attribute__ ((packed)) ata_smart_thresholds_t; - -typedef struct ata_smart_errorlog_command_struct_s { - unsigned char devicecontrolreg; - unsigned char featuresreg; - unsigned char sector_count; - unsigned char sector_number; - unsigned char cylinder_low; - unsigned char cylinder_high; - unsigned char drive_head; - unsigned char commandreg; - unsigned int timestamp; -} __attribute__ ((packed)) ata_smart_errorlog_command_struct_t; - -typedef struct ata_smart_errorlog_error_struct_s { - unsigned char error_condition; - unsigned char extended_error[14]; - unsigned char state; - unsigned short timestamp; -} __attribute__ ((packed)) ata_smart_errorlog_error_struct_t; - -typedef struct ata_smart_errorlog_struct_s { - ata_smart_errorlog_command_struct_t commands[6]; - ata_smart_errorlog_error_struct_t error_struct; -} __attribute__ ((packed)) ata_smart_errorlog_struct_t; - -typedef struct ata_smart_errorlog_s { - unsigned char revnumber; - unsigned char error_log_pointer; - ata_smart_errorlog_struct_t errorlog_struct[5]; - unsigned short ata_error_count; - unsigned short non_fatal_count; - unsigned short drive_timeout_count; - unsigned char reserved[53]; - unsigned char chksum; -} __attribute__ ((packed)) ata_smart_errorlog_t; - -typedef struct ata_smart_selftestlog_struct_s { - unsigned char selftestnumber; - unsigned char selfteststatus; - unsigned short timestamp; - unsigned char selftestfailurecheckpoint; - unsigned int lbafirstfailure; - unsigned char vendorspecific[15]; -} __attribute__ ((packed)) ata_smart_selftestlog_struct_t; - -typedef struct ata_smart_selftestlog_s { - unsigned short revnumber; - ata_smart_selftestlog_struct_t selftest_struct[21]; - unsigned char vendorspecific[2]; - unsigned char mostrecenttest; - unsigned char resevered[2]; - unsigned char chksum; -} __attribute__ ((packed)) ata_smart_selftestlog_t; - -#endif /* _LINUX_HDSMART_H */
linux/hid.h, linux/hidraw.h
New file.
linux/if_bridge.h
diff -U 1 -Nwr 2.6.25/linux/if_bridge.h 2.6.26/linux/if_bridge.h --- 2.6.25/linux/if_bridge.h 2008-07-11 12:23:44.000000000 +0200 +++ 2.6.26/linux/if_bridge.h 2008-07-11 12:22:28.000000000 +0200 @@ -99,3 +99,5 @@ __u32 ageing_timer_value; - __u32 unused; + __u8 port_hi; + __u8 pad0; + __u16 unused; };
linux/if_tunnel.h
New definitions: SIOC*, ip_tunnel_prl, PRL_DEFAULT
linux/if_wanpipe.h
Removed file. Support for only user removed.
diff -U 1 -Nwr 2.6.25/linux/if_wanpipe.h 2.6.26/linux/if_wanpipe.h --- 2.6.25/linux/if_wanpipe.h 2008-07-11 12:23:44.000000000 +0200 +++ 2.6.26/linux/if_wanpipe.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,103 +0,0 @@ -/***************************************************************************** -* if_wanpipe.h Header file for the Sangoma AF_WANPIPE Socket -* -* Author: Nenad Corbic -* -* Copyright: (c) 2000 Sangoma Technologies Inc. -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version -* 2 of the License, or (at your option) any later version. -* ============================================================================ -* -* Jan 28, 2000 Nenad Corbic Initial Version -* -*****************************************************************************/ - -#ifndef __LINUX_IF_WAN_PACKET_H -#define __LINUX_IF_WAN_PACKET_H - -struct wan_sockaddr_ll -{ - unsigned short sll_family; - unsigned short sll_protocol; - int sll_ifindex; - unsigned short sll_hatype; - unsigned char sll_pkttype; - unsigned char sll_halen; - unsigned char sll_addr[8]; - unsigned char sll_device[14]; - unsigned char sll_card[14]; -}; - -typedef struct -{ - unsigned char free; - unsigned char state_sk; - int rcvbuf; - int sndbuf; - int rmem; - int wmem; - int sk_count; - unsigned char bound; - char name[14]; - unsigned char d_state; - unsigned char svc; - unsigned short lcn; - unsigned char mbox; - unsigned char cmd_busy; - unsigned char command; - unsigned poll; - unsigned poll_cnt; - int rblock; -} wan_debug_hdr_t; - -#define MAX_NUM_DEBUG 10 -#define X25_PROT 0x16 -#define PVC_PROT 0x17 - -typedef struct -{ - wan_debug_hdr_t debug[MAX_NUM_DEBUG]; -}wan_debug_t; - -#define SIOC_WANPIPE_GET_CALL_DATA (SIOCPROTOPRIVATE + 0) -#define SIOC_WANPIPE_SET_CALL_DATA (SIOCPROTOPRIVATE + 1) -#define SIOC_WANPIPE_ACCEPT_CALL (SIOCPROTOPRIVATE + 2) -#define SIOC_WANPIPE_CLEAR_CALL (SIOCPROTOPRIVATE + 3) -#define SIOC_WANPIPE_RESET_CALL (SIOCPROTOPRIVATE + 4) -#define SIOC_WANPIPE_DEBUG (SIOCPROTOPRIVATE + 5) -#define SIOC_WANPIPE_SET_NONBLOCK (SIOCPROTOPRIVATE + 6) -#define SIOC_WANPIPE_CHECK_TX (SIOCPROTOPRIVATE + 7) -#define SIOC_WANPIPE_SOCK_STATE (SIOCPROTOPRIVATE + 8) - -/* Packet types */ - -#define WAN_PACKET_HOST 0 /* To us */ -#define WAN_PACKET_BROADCAST 1 /* To all */ -#define WAN_PACKET_MULTICAST 2 /* To group */ -#define WAN_PACKET_OTHERHOST 3 /* To someone else */ -#define WAN_PACKET_OUTGOING 4 /* Outgoing of any type */ -/* These ones are invisible by user level */ -#define WAN_PACKET_LOOPBACK 5 /* MC/BRD frame looped back */ -#define WAN_PACKET_FASTROUTE 6 /* Fastrouted frame */ - - -/* X25 specific */ -#define WAN_PACKET_DATA 7 -#define WAN_PACKET_CMD 8 -#define WAN_PACKET_ASYNC 9 -#define WAN_PACKET_ERR 10 - -/* Packet socket options */ - -#define WAN_PACKET_ADD_MEMBERSHIP 1 -#define WAN_PACKET_DROP_MEMBERSHIP 2 - -#define WAN_PACKET_MR_MULTICAST 0 -#define WAN_PACKET_MR_PROMISC 1 -#define WAN_PACKET_MR_ALLMULTI 2 - - -#endif
linux/in6.h
New definitions: IPV6_PREFER_SRC_*
linux/input.h
New definitions: KEY_MEDIA_REPEAT, SW_RFKILL_ALL
linux/ipv6.h
New definition: DEVCONF_MC_FORWARDING
linux/isdn.h
Removed cobalt special case for upper bounds
linux/keyctl.h
New definition: KEYCTL_GET_SECURITY
linux/kvm.h
New definitions kvm_*, KVM_*
linux/lock_dlm_plock.h
Removed file. Replaced by linux/dlm_plock.h, not compatible. Used by redhat-cluster. Fixed.
diff -U 1 -Nwr 2.6.25/linux/lock_dlm_plock.h 2.6.26/linux/lock_dlm_plock.h --- 2.6.25/linux/lock_dlm_plock.h 2008-07-11 12:23:42.000000000 +0200 +++ 2.6.26/linux/lock_dlm_plock.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2005 Red Hat, Inc. All rights reserved. - * - * This copyrighted material is made available to anyone wishing to use, - * modify, copy, or redistribute it subject to the terms and conditions - * of the GNU General Public License v.2. - */ - -#ifndef __LOCK_DLM_PLOCK_DOT_H__ -#define __LOCK_DLM_PLOCK_DOT_H__ - -#define GDLM_PLOCK_MISC_NAME "lock_dlm_plock" - -#define GDLM_PLOCK_VERSION_MAJOR 1 -#define GDLM_PLOCK_VERSION_MINOR 1 -#define GDLM_PLOCK_VERSION_PATCH 0 - -enum { - GDLM_PLOCK_OP_LOCK = 1, - GDLM_PLOCK_OP_UNLOCK, - GDLM_PLOCK_OP_GET, -}; - -struct gdlm_plock_info { - __u32 version[3]; - __u8 optype; - __u8 ex; - __u8 wait; - __u8 pad; - __u32 pid; - __s32 nodeid; - __s32 rv; - __u32 fsid; - __u64 number; - __u64 start; - __u64 end; - __u64 owner; -}; - -#endif -
linux/mempolicy.h
New definitions MPOL_*
linux/meye.h
Removed definition: ?V4L2_CID_SHARPNESS, replaced by ?V4L2_CID_MEYE_SHARPNESS. Fixed.
diff -U 1 -Nwr 2.6.25/linux/meye.h 2.6.26/linux/meye.h --- 2.6.25/linux/meye.h 2008-07-11 12:23:42.000000000 +0200 +++ 2.6.26/linux/meye.h 2008-07-11 12:22:26.000000000 +0200 @@ -60,3 +60,3 @@ #define V4L2_CID_AGC V4L2_CID_PRIVATE_BASE -#define V4L2_CID_SHARPNESS (V4L2_CID_PRIVATE_BASE + 1) +#define V4L2_CID_MEYE_SHARPNESS (V4L2_CID_PRIVATE_BASE + 1) #define V4L2_CID_PICTURE (V4L2_CID_PRIVATE_BASE + 2)
linux/mroute6.h
New file
linux/msdos_fs.h
Removed definition FAT_VALID_MEDIA
diff -U 1 -Nwr 2.6.25/linux/msdos_fs.h 2.6.26/linux/msdos_fs.h --- 2.6.25/linux/msdos_fs.h 2008-07-11 12:23:45.000000000 +0200 +++ 2.6.26/linux/msdos_fs.h 2008-07-11 12:22:29.000000000 +0200 @@ -59,4 +59,2 @@ -/* media of boot sector */ -#define FAT_VALID_MEDIA(x) ((0xF8 <= (x) && (x) <= 0xFF) || (x) == 0xF0) #define FAT_FIRST_ENT(s, x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : \
linux/msg.h
New definition MSG_MEM_SCALE
linux/mtio.h
New definition MT_ST_SILI
linux/nbd.h
Remove non-gcc guard, would be broken anyway
linux/netdevice.h
Remove definitions LL_MAX_HEADER, MAX_HEADER. The value was never usable from userspace. Fixed.
diff -U 1 -Nwr 2.6.25/linux/netdevice.h 2.6.26/linux/netdevice.h --- 2.6.25/linux/netdevice.h 2008-07-11 12:23:45.000000000 +0200 +++ 2.6.26/linux/netdevice.h 2008-07-11 12:22:29.000000000 +0200 @@ -39,25 +39,2 @@ -/* - * Compute the worst case header length according to the protocols - * used. - */ - -#if !defined(CONFIG_AX25) && !defined(CONFIG_AX25_MODULE) && !defined(CONFIG_TR) -#define LL_MAX_HEADER 32 -#else -#if defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE) -#define LL_MAX_HEADER 96 -#else -#define LL_MAX_HEADER 48 -#endif -#endif - -#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \ - !defined(CONFIG_NET_IPGRE) && !defined(CONFIG_NET_IPGRE_MODULE) && \ - !defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \ - !defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE) -#define MAX_HEADER LL_MAX_HEADER -#else -#define MAX_HEADER (LL_MAX_HEADER + 48) -#endif
linux/netfilter/nfnetlink_conntrack.h
New definitions CTA_*
linux/netfilter/xt_sctp.h
New functions: sctp_*.
Removed definitions: NF_IP_PRI_CONNTRACK_HELPER, NF_IP_PRI_NAT_SEQ_ADJUST. Ignored. Value is only usable from kernel modules.
Compatible redefinition NPROTO
Removed definition of NFS3_POST_OP_ATTR_WORDS. Ignored.
New definitions NL80211_*
New definitions PCI_EXP_*
New definitions PHN_*, removed definition PH_IOC_MAXNR
New file
New definitions PR_GET_*, PR_SET_*, PR_TSC_*
New definition RUSAGE_THREAD.
New definition RT_TABLE_COMPAT.
Moved internal port definitions.
New definition SERIO_ZHENHUA
Update version of kernel interface. Not used from userspace.
New definition usb_cdc_dmm_desc.
New definition USB_DT_CS_RADIO_CONTROL, USB_CAP_TYPE_EXT, usb_ext_cap_descriptor, USB_LPM_SUPPORT
New definitions USBDEVFS_URB_*
Nw definitions ?V4L2_*
New file.
Types update. New definitions VIRTIO_*
New file
Types update
New file.
New definition IW_MODE_MESH.
Types update, new definition XFRM_POLICY_TYPE_ANY, XFRM_STATE_AF_UNSPEC
Removed file. Defines on-media format. Fixed. linux/netfilter_arp/arp_tables.h
Removed definitions: arpt_table, arpt_target, replaced by xt_*
diff -U 1 -Nwr 2.6.25/linux/netfilter_arp/arp_tables.h 2.6.26/linux/netfilter_arp/arp_tables.h
--- 2.6.25/linux/netfilter_arp/arp_tables.h 2008-07-11 12:23:39.000000000 +0200
+++ 2.6.26/linux/netfilter_arp/arp_tables.h 2008-07-11 12:22:23.000000000 +0200
@@ -17,4 +18,2 @@
#define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
-#define arpt_target xt_target
-#define arpt_table xt_table
linux/netfilter_ipv4.h
diff -U 1 -Nwr 2.6.25/linux/netfilter_ipv4.h 2.6.26/linux/netfilter_ipv4.h
--- 2.6.25/linux/netfilter_ipv4.h 2008-07-11 12:23:45.000000000 +0200
+++ 2.6.26/linux/netfilter_ipv4.h 2008-07-11 12:22:29.000000000 +0200
@@ -62,4 +62,2 @@
NF_IP_PRI_SELINUX_LAST = 225,
- NF_IP_PRI_CONNTRACK_HELPER = INT_MAX - 2,
- NF_IP_PRI_NAT_SEQ_ADJUST = INT_MAX - 1,
NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
linux/net.h
linux/nfs3.h
diff -U 1 -Nwr 2.6.25/linux/nfs3.h 2.6.26/linux/nfs3.h
--- 2.6.25/linux/nfs3.h 2008-07-11 12:23:45.000000000 +0200
+++ 2.6.26/linux/nfs3.h 2008-07-11 12:22:29.000000000 +0200
@@ -98,8 +98,2 @@
-#if defined(__KERNEL__) || defined(NFS_NEED_KERNEL_TYPES)
-
-/* Number of 32bit words in post_op_attr */
-#define NFS3_POST_OP_ATTR_WORDS 22
-
-#endif /* __KERNEL__ */
#endif /* _LINUX_NFS3_H */
linux/nl80211.h
linux/pci_regs.h
linux/phantom.h
diff -U 1 -Nwr 2.6.25/linux/phantom.h 2.6.26/linux/phantom.h
--- 2.6.25/linux/phantom.h 2008-07-11 12:23:42.000000000 +0200
+++ 2.6.26/linux/phantom.h 2008-07-11 12:22:27.000000000 +0200
@@ -36,3 +36,6 @@
#define PHN_NOT_OH _IO (PH_IOC_MAGIC, 4)
-#define PH_IOC_MAXNR 4
+#define PHN_GETREG _IOWR(PH_IOC_MAGIC, 5, struct phm_reg)
+#define PHN_SETREG _IOW(PH_IOC_MAGIC, 6, struct phm_reg)
+#define PHN_GETREGS _IOWR(PH_IOC_MAGIC, 7, struct phm_regs)
+#define PHN_SETREGS _IOW(PH_IOC_MAGIC, 8, struct phm_regs)
linux/pim.h
linux/prctl.h
linux/resource.h
linux/rtnetlink.h
linux/serial_core.h
diff -U 1 -Nwr 2.6.25/linux/serial_core.h 2.6.26/linux/serial_core.h
--- 2.6.25/linux/serial_core.h 2008-07-11 12:23:46.000000000 +0200
+++ 2.6.26/linux/serial_core.h 2008-07-11 12:22:30.000000000 +0200
@@ -151,4 +151,4 @@
-#define PORT_SC26XX 79
-
+/* Blackfin SPORT */
+#define PORT_BFIN_SPORT 79
@@ -158,2 +158,4 @@
+#define PORT_SC26XX 82
+
linux/serio.h
linux/synclink.h
diff -U 1 -Nwr 2.6.25/linux/synclink.h 2.6.26/linux/synclink.h
--- 2.6.25/linux/synclink.h 2008-07-11 12:23:46.000000000 +0200
+++ 2.6.26/linux/synclink.h 2008-07-11 12:22:30.000000000 +0200
@@ -15,6 +15,2 @@
-#define BOOLEAN int
-#define TRUE 1
-#define FALSE 0
-
#define BIT0 0x0001
linux/timex.h
diff -U 1 -Nwr 2.6.25/linux/timex.h 2.6.26/linux/timex.h
--- 2.6.25/linux/timex.h 2008-07-11 12:23:46.000000000 +0200
+++ 2.6.26/linux/timex.h 2008-07-11 12:22:31.000000000 +0200
@@ -59,2 +59,4 @@
+#define NTP_API 4 /* NTP API version */
+
/*
@@ -83,12 +81,14 @@
*/
-#define SHIFT_UPDATE (SHIFT_HZ + 1) /* time offset scale (shift) */
#define SHIFT_USEC 16 /* frequency offset scale (shift) */
-#define SHIFT_NSEC 12 /* kernel frequency offset scale */
-
-#define MAXPHASE 512000L /* max phase error (us) */
-#define MAXFREQ (512L << SHIFT_USEC) /* max frequency error (ppm) */
-#define MAXFREQ_NSEC (512000L << SHIFT_NSEC) /* max frequency error (ppb) */
+#define PPM_SCALE (NSEC_PER_USEC << (NTP_SCALE_SHIFT - SHIFT_USEC))
+#define PPM_SCALE_INV_SHIFT 20
+#define PPM_SCALE_INV ((1ll << (PPM_SCALE_INV_SHIFT + NTP_SCALE_SHIFT)) / \
+ PPM_SCALE + 1)
+
+#define MAXPHASE 500000000l /* max phase error (ns) */
+#define MAXFREQ 500000 /* max frequency error (ns/s) */
+#define MAXFREQ_SCALED ((s64)MAXFREQ << NTP_SCALE_SHIFT)
#define MINSEC 256 /* min interval between updates (s) */
#define MAXSEC 2048 /* max interval between updates (s) */
-#define NTP_PHASE_LIMIT (MAXPHASE << 5) /* beyond max. dispersion */
+#define NTP_PHASE_LIMIT ((MAXPHASE / NSEC_PER_USEC) << 5) /* beyond max. dispersion */
@@ -122,5 +122,7 @@
+ int tai; /* TAI offset (ro) */
+
int :32; int :32; int :32; int :32;
int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32;
};
@@ -136,2 +138,5 @@
#define ADJ_TIMECONST 0x0020 /* pll time constant */
+#define ADJ_TAI 0x0080 /* set TAI offset */
+#define ADJ_MICRO 0x1000 /* select microsecond resolution */
+#define ADJ_NANO 0x2000 /* select nanosecond resolution */
#define ADJ_TICK 0x4000 /* tick value */
@@ -147,4 +152,2 @@
#define MOD_TIMECONST ADJ_TIMECONST
-#define MOD_CLKB ADJ_TICK
-#define MOD_CLKA ADJ_OFFSET_SINGLESHOT /* 0x8000 in original */
@@ -170,5 +173,9 @@
#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */
+#define STA_NANO 0x2000 /* resolution (0 = us, 1 = ns) (ro) */
+#define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */
+#define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */
+/* read-only bits */
#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
- STA_PPSERROR | STA_CLOCKERR) /* read-only bits */
+ STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
linux/usb/cdc.h
linux/usb/ch9.h
linux/usbdevice_fs.h
linux/videodev2.h
linux/virtio_9p.h, linux/virtio_balloon.h
linux/virtio_blk.h, linux/virtio_config.h
linux/virtio_console.h
linux/virtio_net.h
linux/virtio_pci.h, linux/virtio_ring.h
linux/wireless.h
linux/xfrm.h
mtd
mtd/ubi-header.h
diff -U 1 -Nwr 2.6.25/mtd/ubi-header.h 2.6.26/mtd/ubi-header.h
--- 2.6.25/mtd/ubi-header.h 2008-07-11 12:23:47.000000000 +0200
+++ 2.6.26/mtd/ubi-header.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,372 +0,0 @@
-/*
- * Copyright (c) International Business Machines Corp., 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Authors: Artem Bityutskiy (Битюцкий Артём)
- * Thomas Gleixner
- * Frank Haverkamp
- * Oliver Lohmann
- * Andreas Arnez
- */
-
-/*
- * This file defines the layout of UBI headers and all the other UBI on-flash
- * data structures. May be included by user-space.
- */
-
-#ifndef __UBI_HEADER_H__
-#define __UBI_HEADER_H__
-
-#include <asm/byteorder.h>
-
-/* The version of UBI images supported by this implementation */
-#define UBI_VERSION 1
-
-/* The highest erase counter value supported by this implementation */
-#define UBI_MAX_ERASECOUNTER 0x7FFFFFFF
-
-/* The initial CRC32 value used when calculating CRC checksums */
-#define UBI_CRC32_INIT 0xFFFFFFFFU
-
-/* Erase counter header magic number (ASCII "UBI#") */
-#define UBI_EC_HDR_MAGIC 0x55424923
-/* Volume identifier header magic number (ASCII "UBI!") */
-#define UBI_VID_HDR_MAGIC 0x55424921
-
-/*
- * Volume type constants used in the volume identifier header.
- *
- * @UBI_VID_DYNAMIC: dynamic volume
- * @UBI_VID_STATIC: static volume
- */
-enum {
- UBI_VID_DYNAMIC = 1,
- UBI_VID_STATIC = 2
-};
-
-/*
- * Volume flags used in the volume table record.
- *
- * @UBI_VTBL_AUTORESIZE_FLG: auto-resize this volume
- *
- * %UBI_VTBL_AUTORESIZE_FLG flag can be set only for one volume in the volume
- * table. UBI automatically re-sizes the volume which has this flag and makes
- * the volume to be of largest possible size. This means that if after the
- * initialization UBI finds out that there are available physical eraseblocks
- * present on the device, it automatically appends all of them to the volume
- * (the physical eraseblocks reserved for bad eraseblocks handling and other
- * reserved physical eraseblocks are not taken). So, if there is a volume with
- * the %UBI_VTBL_AUTORESIZE_FLG flag set, the amount of available logical
- * eraseblocks will be zero after UBI is loaded, because all of them will be
- * reserved for this volume. Note, the %UBI_VTBL_AUTORESIZE_FLG bit is cleared
- * after the volume had been initialized.
- *
- * The auto-resize feature is useful for device production purposes. For
- * example, different NAND flash chips may have different amount of initial bad
- * eraseblocks, depending of particular chip instance. Manufacturers of NAND
- * chips usually guarantee that the amount of initial bad eraseblocks does not
- * exceed certain percent, e.g. 2%. When one creates an UBI image which will be
- * flashed to the end devices in production, he does not know the exact amount
- * of good physical eraseblocks the NAND chip on the device will have, but this
- * number is required to calculate the volume sized and put them to the volume
- * table of the UBI image. In this case, one of the volumes (e.g., the one
- * which will store the root file system) is marked as "auto-resizable", and
- * UBI will adjust its size on the first boot if needed.
- *
- * Note, first UBI reserves some amount of physical eraseblocks for bad
- * eraseblock handling, and then re-sizes the volume, not vice-versa. This
- * means that the pool of reserved physical eraseblocks will always be present.
- */
-enum {
- UBI_VTBL_AUTORESIZE_FLG = 0x01,
-};
-
-/*
- * Compatibility constants used by internal volumes.
- *
- * @UBI_COMPAT_DELETE: delete this internal volume before anything is written
- * to the flash
- * @UBI_COMPAT_RO: attach this device in read-only mode
- * @UBI_COMPAT_PRESERVE: preserve this internal volume - do not touch its
- * physical eraseblocks, don't allow the wear-leveling unit to move them
- * @UBI_COMPAT_REJECT: reject this UBI image
- */
-enum {
- UBI_COMPAT_DELETE = 1,
- UBI_COMPAT_RO = 2,
- UBI_COMPAT_PRESERVE = 4,
- UBI_COMPAT_REJECT = 5
-};
-
-/* Sizes of UBI headers */
-#define UBI_EC_HDR_SIZE sizeof(struct ubi_ec_hdr)
-#define UBI_VID_HDR_SIZE sizeof(struct ubi_vid_hdr)
-
-/* Sizes of UBI headers without the ending CRC */
-#define UBI_EC_HDR_SIZE_CRC (UBI_EC_HDR_SIZE - sizeof(__be32))
-#define UBI_VID_HDR_SIZE_CRC (UBI_VID_HDR_SIZE - sizeof(__be32))
-
-/**
- * struct ubi_ec_hdr - UBI erase counter header.
- * @magic: erase counter header magic number (%UBI_EC_HDR_MAGIC)
- * @version: version of UBI implementation which is supposed to accept this
- * UBI image
- * @padding1: reserved for future, zeroes
- * @ec: the erase counter
- * @vid_hdr_offset: where the VID header starts
- * @data_offset: where the user data start
- * @padding2: reserved for future, zeroes
- * @hdr_crc: erase counter header CRC checksum
- *
- * The erase counter header takes 64 bytes and has a plenty of unused space for
- * future usage. The unused fields are zeroed. The @version field is used to
- * indicate the version of UBI implementation which is supposed to be able to
- * work with this UBI image. If @version is greater then the current UBI
- * version, the image is rejected. This may be useful in future if something
- * is changed radically. This field is duplicated in the volume identifier
- * header.
- *
- * The @vid_hdr_offset and @data_offset fields contain the offset of the the
- * volume identifier header and user data, relative to the beginning of the
- * physical eraseblock. These values have to be the same for all physical
- * eraseblocks.
- */
-struct ubi_ec_hdr {
- __be32 magic;
- __u8 version;
- __u8 padding1[3];
- __be64 ec; /* Warning: the current limit is 31-bit anyway! */
- __be32 vid_hdr_offset;
- __be32 data_offset;
- __u8 padding2[36];
- __be32 hdr_crc;
-} __attribute__ ((packed));
-
-/**
- * struct ubi_vid_hdr - on-flash UBI volume identifier header.
- * @magic: volume identifier header magic number (%UBI_VID_HDR_MAGIC)
- * @version: UBI implementation version which is supposed to accept this UBI
- * image (%UBI_VERSION)
- * @vol_type: volume type (%UBI_VID_DYNAMIC or %UBI_VID_STATIC)
- * @copy_flag: if this logical eraseblock was copied from another physical
- * eraseblock (for wear-leveling reasons)
- * @compat: compatibility of this volume (%0, %UBI_COMPAT_DELETE,
- * %UBI_COMPAT_IGNORE, %UBI_COMPAT_PRESERVE, or %UBI_COMPAT_REJECT)
- * @vol_id: ID of this volume
- * @lnum: logical eraseblock number
- * @leb_ver: version of this logical eraseblock (IMPORTANT: obsolete, to be
- * removed, kept only for not breaking older UBI users)
- * @data_size: how many bytes of data this logical eraseblock contains
- * @used_ebs: total number of used logical eraseblocks in this volume
- * @data_pad: how many bytes at the end of this physical eraseblock are not
- * used
- * @data_crc: CRC checksum of the data stored in this logical eraseblock
- * @padding1: reserved for future, zeroes
- * @sqnum: sequence number
- * @padding2: reserved for future, zeroes
- * @hdr_crc: volume identifier header CRC checksum
- *
- * The @sqnum is the value of the global sequence counter at the time when this
- * VID header was created. The global sequence counter is incremented each time
- * UBI writes a new VID header to the flash, i.e. when it maps a logical
- * eraseblock to a new physical eraseblock. The global sequence counter is an
- * unsigned 64-bit integer and we assume it never overflows. The @sqnum
- * (sequence number) is used to distinguish between older and newer versions of
- * logical eraseblocks.
- *
- * There are 2 situations when there may be more then one physical eraseblock
- * corresponding to the same logical eraseblock, i.e., having the same @vol_id
- * and @lnum values in the volume identifier header. Suppose we have a logical
- * eraseblock L and it is mapped to the physical eraseblock P.
- *
- * 1. Because UBI may erase physical eraseblocks asynchronously, the following
- * situation is possible: L is asynchronously erased, so P is scheduled for
- * erasure, then L is written to,i.e. mapped to another physical eraseblock P1,
- * so P1 is written to, then an unclean reboot happens. Result - there are 2
- * physical eraseblocks P and P1 corresponding to the same logical eraseblock
- * L. But P1 has greater sequence number, so UBI picks P1 when it attaches the
- * flash.
- *
- * 2. From time to time UBI moves logical eraseblocks to other physical
- * eraseblocks for wear-leveling reasons. If, for example, UBI moves L from P
- * to P1, and an unclean reboot happens before P is physically erased, there
- * are two physical eraseblocks P and P1 corresponding to L and UBI has to
- * select one of them when the flash is attached. The @sqnum field says which
- * PEB is the original (obviously P will have lower @sqnum) and the copy. But
- * it is not enough to select the physical eraseblock with the higher sequence
- * number, because the unclean reboot could have happen in the middle of the
- * copying process, so the data in P is corrupted. It is also not enough to
- * just select the physical eraseblock with lower sequence number, because the
- * data there may be old (consider a case if more data was added to P1 after
- * the copying). Moreover, the unclean reboot may happen when the erasure of P
- * was just started, so it result in unstable P, which is "mostly" OK, but
- * still has unstable bits.
- *
- * UBI uses the @copy_flag field to indicate that this logical eraseblock is a
- * copy. UBI also calculates data CRC when the data is moved and stores it at
- * the @data_crc field of the copy (P1). So when UBI needs to pick one physical
- * eraseblock of two (P or P1), the @copy_flag of the newer one (P1) is
- * examined. If it is cleared, the situation* is simple and the newer one is
- * picked. If it is set, the data CRC of the copy (P1) is examined. If the CRC
- * checksum is correct, this physical eraseblock is selected (P1). Otherwise
- * the older one (P) is selected.
- *
- * Note, there is an obsolete @leb_ver field which was used instead of @sqnum
- * in the past. But it is not used anymore and we keep it in order to be able
- * to deal with old UBI images. It will be removed at some point.
- *
- * There are 2 sorts of volumes in UBI: user volumes and internal volumes.
- * Internal volumes are not seen from outside and are used for various internal
- * UBI purposes. In this implementation there is only one internal volume - the
- * layout volume. Internal volumes are the main mechanism of UBI extensions.
- * For example, in future one may introduce a journal internal volume. Internal
- * volumes have their own reserved range of IDs.
- *
- * The @compat field is only used for internal volumes and contains the "degree
- * of their compatibility". It is always zero for user volumes. This field
- * provides a mechanism to introduce UBI extensions and to be still compatible
- * with older UBI binaries. For example, if someone introduced a journal in
- * future, he would probably use %UBI_COMPAT_DELETE compatibility for the
- * journal volume. And in this case, older UBI binaries, which know nothing
- * about the journal volume, would just delete this volume and work perfectly
- * fine. This is similar to what Ext2fs does when it is fed by an Ext3fs image
- * - it just ignores the Ext3fs journal.
- *
- * The @data_crc field contains the CRC checksum of the contents of the logical
- * eraseblock if this is a static volume. In case of dynamic volumes, it does
- * not contain the CRC checksum as a rule. The only exception is when the
- * data of the physical eraseblock was moved by the wear-leveling unit, then
- * the wear-leveling unit calculates the data CRC and stores it in the
- * @data_crc field. And of course, the @copy_flag is %in this case.
- *
- * The @data_size field is used only for static volumes because UBI has to know
- * how many bytes of data are stored in this eraseblock. For dynamic volumes,
- * this field usually contains zero. The only exception is when the data of the
- * physical eraseblock was moved to another physical eraseblock for
- * wear-leveling reasons. In this case, UBI calculates CRC checksum of the
- * contents and uses both @data_crc and @data_size fields. In this case, the
- * @data_size field contains data size.
- *
- * The @used_ebs field is used only for static volumes and indicates how many
- * eraseblocks the data of the volume takes. For dynamic volumes this field is
- * not used and always contains zero.
- *
- * The @data_pad is calculated when volumes are created using the alignment
- * parameter. So, effectively, the @data_pad field reduces the size of logical
- * eraseblocks of this volume. This is very handy when one uses block-oriented
- * software (say, cramfs) on top of the UBI volume.
- */
-struct ubi_vid_hdr {
- __be32 magic;
- __u8 version;
- __u8 vol_type;
- __u8 copy_flag;
- __u8 compat;
- __be32 vol_id;
- __be32 lnum;
- __be32 leb_ver; /* obsolete, to be removed, don't use */
- __be32 data_size;
- __be32 used_ebs;
- __be32 data_pad;
- __be32 data_crc;
- __u8 padding1[4];
- __be64 sqnum;
- __u8 padding2[12];
- __be32 hdr_crc;
-} __attribute__ ((packed));
-
-/* Internal UBI volumes count */
-#define UBI_INT_VOL_COUNT 1
-
-/*
- * Starting ID of internal volumes. There is reserved room for 4096 internal
- * volumes.
- */
-#define UBI_INTERNAL_VOL_START (0x7FFFFFFF - 4096)
-
-/* The layout volume contains the volume table */
-
-#define UBI_LAYOUT_VOLUME_ID UBI_INTERNAL_VOL_START
-#define UBI_LAYOUT_VOLUME_TYPE UBI_VID_DYNAMIC
-#define UBI_LAYOUT_VOLUME_ALIGN 1
-#define UBI_LAYOUT_VOLUME_EBS 2
-#define UBI_LAYOUT_VOLUME_NAME "layout volume"
-#define UBI_LAYOUT_VOLUME_COMPAT UBI_COMPAT_REJECT
-
-/* The maximum number of volumes per one UBI device */
-#define UBI_MAX_VOLUMES 128
-
-/* The maximum volume name length */
-#define UBI_VOL_NAME_MAX 127
-
-/* Size of the volume table record */
-#define UBI_VTBL_RECORD_SIZE sizeof(struct ubi_vtbl_record)
-
-/* Size of the volume table record without the ending CRC */
-#define UBI_VTBL_RECORD_SIZE_CRC (UBI_VTBL_RECORD_SIZE - sizeof(__be32))
-
-/**
- * struct ubi_vtbl_record - a record in the volume table.
- * @reserved_pebs: how many physical eraseblocks are reserved for this volume
- * @alignment: volume alignment
- * @data_pad: how many bytes are unused at the end of the each physical
- * eraseblock to satisfy the requested alignment
- * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @upd_marker: if volume update was started but not finished
- * @name_len: volume name length
- * @name: the volume name
- * @flags: volume flags (%UBI_VTBL_AUTORESIZE_FLG)
- * @padding: reserved, zeroes
- * @crc: a CRC32 checksum of the record
- *
- * The volume table records are stored in the volume table, which is stored in
- * the layout volume. The layout volume consists of 2 logical eraseblock, each
- * of which contains a copy of the volume table (i.e., the volume table is
- * duplicated). The volume table is an array of &struct ubi_vtbl_record
- * objects indexed by the volume ID.
- *
- * If the size of the logical eraseblock is large enough to fit
- * %UBI_MAX_VOLUMES records, the volume table contains %UBI_MAX_VOLUMES
- * records. Otherwise, it contains as many records as it can fit (i.e., size of
- * logical eraseblock divided by sizeof(struct ubi_vtbl_record)).
- *
- * The @upd_marker flag is used to implement volume update. It is set to %1
- * before update and set to %0 after the update. So if the update operation was
- * interrupted, UBI knows that the volume is corrupted.
- *
- * The @alignment field is specified when the volume is created and cannot be
- * later changed. It may be useful, for example, when a block-oriented file
- * system works on top of UBI. The @data_pad field is calculated using the
- * logical eraseblock size and @alignment. The alignment must be multiple to the
- * minimal flash I/O unit. If @alignment is 1, all the available space of
- * the physical eraseblocks is used.
- *
- * Empty records contain all zeroes and the CRC checksum of those zeroes.
- */
-struct ubi_vtbl_record {
- __be32 reserved_pebs;
- __be32 alignment;
- __be32 data_pad;
- __u8 vol_type;
- __u8 upd_marker;
- __be16 name_len;
- __u8 name[UBI_VOL_NAME_MAX+1];
- __u8 flags;
- __u8 padding[23];
- __be32 crc;
-} __attribute__ ((packed));
-
-#endif /* !__UBI_HEADER_H__ */