Merge branch 'master'
This commit is contained in:
@@ -378,6 +378,7 @@ extern void device_bind_driver(struct device * dev);
|
||||
extern void device_release_driver(struct device * dev);
|
||||
extern int device_attach(struct device * dev);
|
||||
extern void driver_attach(struct device_driver * drv);
|
||||
extern void device_reprobe(struct device *dev);
|
||||
|
||||
|
||||
/*
|
||||
@@ -399,7 +400,7 @@ extern struct device * get_device(struct device * dev);
|
||||
extern void put_device(struct device * dev);
|
||||
|
||||
|
||||
/* drivers/base/power.c */
|
||||
/* drivers/base/power/shutdown.c */
|
||||
extern void device_shutdown(void);
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ enum dma_data_direction {
|
||||
#define DMA_31BIT_MASK 0x000000007fffffffULL
|
||||
#define DMA_30BIT_MASK 0x000000003fffffffULL
|
||||
#define DMA_29BIT_MASK 0x000000001fffffffULL
|
||||
#define DMA_28BIT_MASK 0x000000000fffffffULL
|
||||
|
||||
#include <asm/dma-mapping.h>
|
||||
|
||||
|
||||
+31
-14
@@ -20,10 +20,7 @@ void unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long)
|
||||
int hugetlb_prefault(struct address_space *, struct vm_area_struct *);
|
||||
int hugetlb_report_meminfo(char *);
|
||||
int hugetlb_report_node_meminfo(int, char *);
|
||||
int is_hugepage_mem_enough(size_t);
|
||||
unsigned long hugetlb_total_pages(void);
|
||||
struct page *alloc_huge_page(struct vm_area_struct *, unsigned long);
|
||||
void free_huge_page(struct page *);
|
||||
int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
unsigned long address, int write_access);
|
||||
|
||||
@@ -39,18 +36,35 @@ struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address,
|
||||
int write);
|
||||
struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,
|
||||
pmd_t *pmd, int write);
|
||||
int is_aligned_hugepage_range(unsigned long addr, unsigned long len);
|
||||
int pmd_huge(pmd_t pmd);
|
||||
void hugetlb_change_protection(struct vm_area_struct *vma,
|
||||
unsigned long address, unsigned long end, pgprot_t newprot);
|
||||
|
||||
#ifndef ARCH_HAS_HUGEPAGE_ONLY_RANGE
|
||||
#define is_hugepage_only_range(mm, addr, len) 0
|
||||
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \
|
||||
do { } while (0)
|
||||
#endif
|
||||
|
||||
#ifndef ARCH_HAS_HUGETLB_FREE_PGD_RANGE
|
||||
#define hugetlb_free_pgd_range free_pgd_range
|
||||
#else
|
||||
void hugetlb_free_pgd_range(struct mmu_gather **tlb, unsigned long addr,
|
||||
unsigned long end, unsigned long floor,
|
||||
unsigned long ceiling);
|
||||
#endif
|
||||
|
||||
#ifndef ARCH_HAS_PREPARE_HUGEPAGE_RANGE
|
||||
#define prepare_hugepage_range(addr, len) \
|
||||
is_aligned_hugepage_range(addr, len)
|
||||
/*
|
||||
* If the arch doesn't supply something else, assume that hugepage
|
||||
* size aligned regions are ok without further preparation.
|
||||
*/
|
||||
static inline int prepare_hugepage_range(unsigned long addr, unsigned long len)
|
||||
{
|
||||
if (len & ~HPAGE_MASK)
|
||||
return -EINVAL;
|
||||
if (addr & ~HPAGE_MASK)
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
int prepare_hugepage_range(unsigned long addr, unsigned long len);
|
||||
#endif
|
||||
@@ -87,20 +101,17 @@ static inline unsigned long hugetlb_total_pages(void)
|
||||
#define copy_hugetlb_page_range(src, dst, vma) ({ BUG(); 0; })
|
||||
#define hugetlb_prefault(mapping, vma) ({ BUG(); 0; })
|
||||
#define unmap_hugepage_range(vma, start, end) BUG()
|
||||
#define is_hugepage_mem_enough(size) 0
|
||||
#define hugetlb_report_meminfo(buf) 0
|
||||
#define hugetlb_report_node_meminfo(n, buf) 0
|
||||
#define follow_huge_pmd(mm, addr, pmd, write) NULL
|
||||
#define is_aligned_hugepage_range(addr, len) 0
|
||||
#define prepare_hugepage_range(addr, len) (-EINVAL)
|
||||
#define pmd_huge(x) 0
|
||||
#define is_hugepage_only_range(mm, addr, len) 0
|
||||
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \
|
||||
do { } while (0)
|
||||
#define alloc_huge_page(vma, addr) ({ NULL; })
|
||||
#define free_huge_page(p) ({ (void)(p); BUG(); })
|
||||
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; })
|
||||
#define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; })
|
||||
|
||||
#define hugetlb_change_protection(vma, address, end, newprot)
|
||||
|
||||
#ifndef HPAGE_MASK
|
||||
#define HPAGE_MASK PAGE_MASK /* Keep the compiler happy */
|
||||
#define HPAGE_SIZE PAGE_SIZE
|
||||
@@ -128,6 +139,8 @@ struct hugetlbfs_sb_info {
|
||||
|
||||
struct hugetlbfs_inode_info {
|
||||
struct shared_policy policy;
|
||||
/* Protected by the (global) hugetlb_lock */
|
||||
unsigned long prereserved_hpages;
|
||||
struct inode vfs_inode;
|
||||
};
|
||||
|
||||
@@ -144,6 +157,10 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb)
|
||||
extern struct file_operations hugetlbfs_file_operations;
|
||||
extern struct vm_operations_struct hugetlb_vm_ops;
|
||||
struct file *hugetlb_zero_setup(size_t);
|
||||
int hugetlb_extend_reservation(struct hugetlbfs_inode_info *info,
|
||||
unsigned long atleast_hpages);
|
||||
void hugetlb_truncate_reservation(struct hugetlbfs_inode_info *info,
|
||||
unsigned long atmost_hpages);
|
||||
int hugetlb_get_quota(struct address_space *mapping);
|
||||
void hugetlb_put_quota(struct address_space *mapping);
|
||||
|
||||
|
||||
@@ -509,7 +509,6 @@ extern void ata_host_set_remove(struct ata_host_set *host_set);
|
||||
extern int ata_scsi_detect(struct scsi_host_template *sht);
|
||||
extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
|
||||
extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
|
||||
extern enum scsi_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd);
|
||||
extern int ata_scsi_error(struct Scsi_Host *host);
|
||||
extern void ata_eh_qc_complete(struct ata_queued_cmd *qc);
|
||||
extern void ata_eh_qc_retry(struct ata_queued_cmd *qc);
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef _LINUX_MIGRATE_H
|
||||
#define _LINUX_MIGRATE_H
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
#ifdef CONFIG_MIGRATION
|
||||
extern int isolate_lru_page(struct page *p, struct list_head *pagelist);
|
||||
extern int putback_lru_pages(struct list_head *l);
|
||||
extern int migrate_page(struct page *, struct page *);
|
||||
extern void migrate_page_copy(struct page *, struct page *);
|
||||
extern int migrate_page_remove_references(struct page *, struct page *, int);
|
||||
extern int migrate_pages(struct list_head *l, struct list_head *t,
|
||||
struct list_head *moved, struct list_head *failed);
|
||||
int migrate_pages_to(struct list_head *pagelist,
|
||||
struct vm_area_struct *vma, int dest);
|
||||
extern int fail_migrate_page(struct page *, struct page *);
|
||||
|
||||
extern int migrate_prep(void);
|
||||
|
||||
#else
|
||||
|
||||
static inline int isolate_lru_page(struct page *p, struct list_head *list)
|
||||
{ return -ENOSYS; }
|
||||
static inline int putback_lru_pages(struct list_head *l) { return 0; }
|
||||
static inline int migrate_pages(struct list_head *l, struct list_head *t,
|
||||
struct list_head *moved, struct list_head *failed) { return -ENOSYS; }
|
||||
|
||||
static inline int migrate_prep(void) { return -ENOSYS; }
|
||||
|
||||
/* Possible settings for the migrate_page() method in address_operations */
|
||||
#define migrate_page NULL
|
||||
#define fail_migrate_page NULL
|
||||
|
||||
#endif /* CONFIG_MIGRATION */
|
||||
#endif /* _LINUX_MIGRATE_H */
|
||||
+25
-23
@@ -286,43 +286,34 @@ struct page {
|
||||
*
|
||||
* Also, many kernel routines increase the page count before a critical
|
||||
* routine so they can be sure the page doesn't go away from under them.
|
||||
*
|
||||
* Since 2.6.6 (approx), a free page has ->_count = -1. This is so that we
|
||||
* can use atomic_add_negative(-1, page->_count) to detect when the page
|
||||
* becomes free and so that we can also use atomic_inc_and_test to atomically
|
||||
* detect when we just tried to grab a ref on a page which some other CPU has
|
||||
* already deemed to be freeable.
|
||||
*
|
||||
* NO code should make assumptions about this internal detail! Use the provided
|
||||
* macros which retain the old rules: page_count(page) == 0 is a free page.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Drop a ref, return true if the logical refcount fell to zero (the page has
|
||||
* no users)
|
||||
*/
|
||||
#define put_page_testzero(p) \
|
||||
({ \
|
||||
BUG_ON(atomic_read(&(p)->_count) == -1);\
|
||||
atomic_add_negative(-1, &(p)->_count); \
|
||||
})
|
||||
static inline int put_page_testzero(struct page *page)
|
||||
{
|
||||
BUG_ON(atomic_read(&page->_count) == 0);
|
||||
return atomic_dec_and_test(&page->_count);
|
||||
}
|
||||
|
||||
/*
|
||||
* Grab a ref, return true if the page previously had a logical refcount of
|
||||
* zero. ie: returns true if we just grabbed an already-deemed-to-be-free page
|
||||
* Try to grab a ref unless the page has a refcount of zero, return false if
|
||||
* that is the case.
|
||||
*/
|
||||
#define get_page_testone(p) atomic_inc_and_test(&(p)->_count)
|
||||
|
||||
#define set_page_count(p,v) atomic_set(&(p)->_count, (v) - 1)
|
||||
#define __put_page(p) atomic_dec(&(p)->_count)
|
||||
static inline int get_page_unless_zero(struct page *page)
|
||||
{
|
||||
return atomic_inc_not_zero(&page->_count);
|
||||
}
|
||||
|
||||
extern void FASTCALL(__page_cache_release(struct page *));
|
||||
|
||||
static inline int page_count(struct page *page)
|
||||
{
|
||||
if (PageCompound(page))
|
||||
if (unlikely(PageCompound(page)))
|
||||
page = (struct page *)page_private(page);
|
||||
return atomic_read(&page->_count) + 1;
|
||||
return atomic_read(&page->_count);
|
||||
}
|
||||
|
||||
static inline void get_page(struct page *page)
|
||||
@@ -332,8 +323,19 @@ static inline void get_page(struct page *page)
|
||||
atomic_inc(&page->_count);
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup the page count before being freed into the page allocator for
|
||||
* the first time (boot or memory hotplug)
|
||||
*/
|
||||
static inline void init_page_count(struct page *page)
|
||||
{
|
||||
atomic_set(&page->_count, 1);
|
||||
}
|
||||
|
||||
void put_page(struct page *page);
|
||||
|
||||
void split_page(struct page *page, unsigned int order);
|
||||
|
||||
/*
|
||||
* Multiple processes may "see" the same page. E.g. for untouched
|
||||
* mappings of /dev/null, all processes see the same page full of
|
||||
@@ -1046,7 +1048,7 @@ int in_gate_area_no_task(unsigned long addr);
|
||||
|
||||
int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *,
|
||||
void __user *, size_t *, loff_t *);
|
||||
int shrink_slab(unsigned long scanned, gfp_t gfp_mask,
|
||||
unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
|
||||
unsigned long lru_pages);
|
||||
void drop_pagecache(void);
|
||||
void drop_slab(void);
|
||||
|
||||
@@ -32,7 +32,7 @@ del_page_from_lru(struct zone *zone, struct page *page)
|
||||
{
|
||||
list_del(&page->lru);
|
||||
if (PageActive(page)) {
|
||||
ClearPageActive(page);
|
||||
__ClearPageActive(page);
|
||||
zone->nr_active--;
|
||||
} else {
|
||||
zone->nr_inactive--;
|
||||
|
||||
@@ -199,7 +199,7 @@ struct fat_mount_options {
|
||||
sys_immutable:1, /* set = system files are immutable */
|
||||
dotsOK:1, /* set = hidden and system files are named '.filename' */
|
||||
isvfat:1, /* 0=no vfat long filename support, 1=vfat support */
|
||||
utf8:1, /* Use of UTF8 character set (Default) */
|
||||
utf8:1, /* Use of UTF-8 character set (Default) */
|
||||
unicode_xlate:1, /* create escape sequences for unhandled Unicode */
|
||||
numtail:1, /* Does first alias have a numeric '~1' type tail? */
|
||||
atari:1, /* Use Atari GEMDOS variation of MS-DOS fs */
|
||||
|
||||
@@ -143,6 +143,8 @@ struct proto_ops {
|
||||
struct poll_table_struct *wait);
|
||||
int (*ioctl) (struct socket *sock, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
int (*compat_ioctl) (struct socket *sock, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
int (*listen) (struct socket *sock, int len);
|
||||
int (*shutdown) (struct socket *sock, int flags);
|
||||
int (*setsockopt)(struct socket *sock, int level,
|
||||
@@ -251,6 +253,8 @@ SOCKCALL_UWRAP(name, poll, (struct file *file, struct socket *sock, struct poll_
|
||||
(file, sock, wait)) \
|
||||
SOCKCALL_WRAP(name, ioctl, (struct socket *sock, unsigned int cmd, \
|
||||
unsigned long arg), (sock, cmd, arg)) \
|
||||
SOCKCALL_WRAP(name, compat_ioctl, (struct socket *sock, unsigned int cmd, \
|
||||
unsigned long arg), (sock, cmd, arg)) \
|
||||
SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \
|
||||
SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \
|
||||
SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \
|
||||
@@ -275,6 +279,7 @@ static const struct proto_ops name##_ops = { \
|
||||
.getname = __lock_##name##_getname, \
|
||||
.poll = __lock_##name##_poll, \
|
||||
.ioctl = __lock_##name##_ioctl, \
|
||||
.compat_ioctl = __lock_##name##_compat_ioctl, \
|
||||
.listen = __lock_##name##_listen, \
|
||||
.shutdown = __lock_##name##_shutdown, \
|
||||
.setsockopt = __lock_##name##_setsockopt, \
|
||||
@@ -283,6 +288,7 @@ static const struct proto_ops name##_ops = { \
|
||||
.recvmsg = __lock_##name##_recvmsg, \
|
||||
.mmap = __lock_##name##_mmap, \
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#define MODULE_ALIAS_NETPROTO(proto) \
|
||||
|
||||
+11
-13
@@ -86,8 +86,9 @@
|
||||
* - The __xxx_page_state variants can be used safely when interrupts are
|
||||
* disabled.
|
||||
* - The __xxx_page_state variants can be used if the field is only
|
||||
* modified from process context, or only modified from interrupt context.
|
||||
* In this case, the field should be commented here.
|
||||
* modified from process context and protected from preemption, or only
|
||||
* modified from interrupt context. In this case, the field should be
|
||||
* commented here.
|
||||
*/
|
||||
struct page_state {
|
||||
unsigned long nr_dirty; /* Dirty writeable pages */
|
||||
@@ -239,22 +240,19 @@ extern void __mod_page_state_offset(unsigned long offset, unsigned long delta);
|
||||
#define __ClearPageDirty(page) __clear_bit(PG_dirty, &(page)->flags)
|
||||
#define TestClearPageDirty(page) test_and_clear_bit(PG_dirty, &(page)->flags)
|
||||
|
||||
#define SetPageLRU(page) set_bit(PG_lru, &(page)->flags)
|
||||
#define PageLRU(page) test_bit(PG_lru, &(page)->flags)
|
||||
#define TestSetPageLRU(page) test_and_set_bit(PG_lru, &(page)->flags)
|
||||
#define TestClearPageLRU(page) test_and_clear_bit(PG_lru, &(page)->flags)
|
||||
#define SetPageLRU(page) set_bit(PG_lru, &(page)->flags)
|
||||
#define ClearPageLRU(page) clear_bit(PG_lru, &(page)->flags)
|
||||
#define __ClearPageLRU(page) __clear_bit(PG_lru, &(page)->flags)
|
||||
|
||||
#define PageActive(page) test_bit(PG_active, &(page)->flags)
|
||||
#define SetPageActive(page) set_bit(PG_active, &(page)->flags)
|
||||
#define ClearPageActive(page) clear_bit(PG_active, &(page)->flags)
|
||||
#define TestClearPageActive(page) test_and_clear_bit(PG_active, &(page)->flags)
|
||||
#define TestSetPageActive(page) test_and_set_bit(PG_active, &(page)->flags)
|
||||
#define __ClearPageActive(page) __clear_bit(PG_active, &(page)->flags)
|
||||
|
||||
#define PageSlab(page) test_bit(PG_slab, &(page)->flags)
|
||||
#define SetPageSlab(page) set_bit(PG_slab, &(page)->flags)
|
||||
#define ClearPageSlab(page) clear_bit(PG_slab, &(page)->flags)
|
||||
#define TestClearPageSlab(page) test_and_clear_bit(PG_slab, &(page)->flags)
|
||||
#define TestSetPageSlab(page) test_and_set_bit(PG_slab, &(page)->flags)
|
||||
#define __SetPageSlab(page) __set_bit(PG_slab, &(page)->flags)
|
||||
#define __ClearPageSlab(page) __clear_bit(PG_slab, &(page)->flags)
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
#define PageHighMem(page) is_highmem(page_zone(page))
|
||||
@@ -329,8 +327,8 @@ extern void __mod_page_state_offset(unsigned long offset, unsigned long delta);
|
||||
#define TestClearPageReclaim(page) test_and_clear_bit(PG_reclaim, &(page)->flags)
|
||||
|
||||
#define PageCompound(page) test_bit(PG_compound, &(page)->flags)
|
||||
#define SetPageCompound(page) set_bit(PG_compound, &(page)->flags)
|
||||
#define ClearPageCompound(page) clear_bit(PG_compound, &(page)->flags)
|
||||
#define __SetPageCompound(page) __set_bit(PG_compound, &(page)->flags)
|
||||
#define __ClearPageCompound(page) __clear_bit(PG_compound, &(page)->flags)
|
||||
|
||||
#ifdef CONFIG_SWAP
|
||||
#define PageSwapCache(page) test_bit(PG_swapcache, &(page)->flags)
|
||||
|
||||
@@ -852,6 +852,8 @@
|
||||
#define PCI_DEVICE_ID_QLOGIC_ISP2432 0x2432
|
||||
#define PCI_DEVICE_ID_QLOGIC_ISP2512 0x2512
|
||||
#define PCI_DEVICE_ID_QLOGIC_ISP2522 0x2522
|
||||
#define PCI_DEVICE_ID_QLOGIC_ISP5422 0x5422
|
||||
#define PCI_DEVICE_ID_QLOGIC_ISP5432 0x5432
|
||||
|
||||
#define PCI_VENDOR_ID_CYRIX 0x1078
|
||||
#define PCI_DEVICE_ID_CYRIX_5510 0x0000
|
||||
|
||||
+2
-2
@@ -11,8 +11,6 @@
|
||||
#ifndef _LINUX_RTC_H_
|
||||
#define _LINUX_RTC_H_
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
/*
|
||||
* The struct used to pass data via the following ioctl. Similar to the
|
||||
* struct tm in <time.h>, but it needs to be here so that the kernel
|
||||
@@ -95,6 +93,8 @@ struct rtc_pll_info {
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
typedef struct rtc_task {
|
||||
void (*func)(void *private_data);
|
||||
void *private_data;
|
||||
|
||||
@@ -38,7 +38,6 @@ typedef struct kmem_cache kmem_cache_t;
|
||||
#define SLAB_DEBUG_INITIAL 0x00000200UL /* Call constructor (as verifier) */
|
||||
#define SLAB_RED_ZONE 0x00000400UL /* Red zone objs in a cache */
|
||||
#define SLAB_POISON 0x00000800UL /* Poison objects */
|
||||
#define SLAB_NO_REAP 0x00001000UL /* never reap from the cache */
|
||||
#define SLAB_HWCACHE_ALIGN 0x00002000UL /* align objs on a h/w cache lines */
|
||||
#define SLAB_CACHE_DMA 0x00004000UL /* use GFP_DMA memory */
|
||||
#define SLAB_MUST_HWCACHE_ALIGN 0x00008000UL /* force alignment */
|
||||
@@ -118,7 +117,7 @@ extern void *kzalloc(size_t, gfp_t);
|
||||
*/
|
||||
static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
|
||||
{
|
||||
if (n != 0 && size > INT_MAX / n)
|
||||
if (n != 0 && size > ULONG_MAX / n)
|
||||
return NULL;
|
||||
return kzalloc(n * size, flags);
|
||||
}
|
||||
|
||||
+9
-14
@@ -52,23 +52,12 @@ extern void smp_cpus_done(unsigned int max_cpus);
|
||||
/*
|
||||
* Call a function on all other processors
|
||||
*/
|
||||
extern int smp_call_function (void (*func) (void *info), void *info,
|
||||
int retry, int wait);
|
||||
int smp_call_function(void(*func)(void *info), void *info, int retry, int wait);
|
||||
|
||||
/*
|
||||
* Call a function on all processors
|
||||
*/
|
||||
static inline int on_each_cpu(void (*func) (void *info), void *info,
|
||||
int retry, int wait)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
preempt_disable();
|
||||
ret = smp_call_function(func, info, retry, wait);
|
||||
func(info);
|
||||
preempt_enable();
|
||||
return ret;
|
||||
}
|
||||
int on_each_cpu(void (*func) (void *info), void *info, int retry, int wait);
|
||||
|
||||
#define MSG_ALL_BUT_SELF 0x8000 /* Assume <32768 CPU's */
|
||||
#define MSG_ALL 0x8001
|
||||
@@ -94,7 +83,13 @@ void smp_prepare_boot_cpu(void);
|
||||
#define raw_smp_processor_id() 0
|
||||
#define hard_smp_processor_id() 0
|
||||
#define smp_call_function(func,info,retry,wait) ({ 0; })
|
||||
#define on_each_cpu(func,info,retry,wait) ({ func(info); 0; })
|
||||
#define on_each_cpu(func,info,retry,wait) \
|
||||
({ \
|
||||
local_irq_disable(); \
|
||||
func(info); \
|
||||
local_irq_enable(); \
|
||||
0; \
|
||||
})
|
||||
static inline void smp_send_reschedule(int cpu) { }
|
||||
#define num_booting_cpus() 1
|
||||
#define smp_prepare_boot_cpu() do {} while (0)
|
||||
|
||||
+17
-21
@@ -172,9 +172,24 @@ extern int rotate_reclaimable_page(struct page *page);
|
||||
extern void swap_setup(void);
|
||||
|
||||
/* linux/mm/vmscan.c */
|
||||
extern int try_to_free_pages(struct zone **, gfp_t);
|
||||
extern int shrink_all_memory(int);
|
||||
extern unsigned long try_to_free_pages(struct zone **, gfp_t);
|
||||
extern unsigned long shrink_all_memory(unsigned long nr_pages);
|
||||
extern int vm_swappiness;
|
||||
extern int remove_mapping(struct address_space *mapping, struct page *page);
|
||||
|
||||
/* possible outcome of pageout() */
|
||||
typedef enum {
|
||||
/* failed to write page out, page is locked */
|
||||
PAGE_KEEP,
|
||||
/* move page to the active list, page is locked */
|
||||
PAGE_ACTIVATE,
|
||||
/* page has been sent to the disk successfully, page is unlocked */
|
||||
PAGE_SUCCESS,
|
||||
/* page is clean and locked */
|
||||
PAGE_CLEAN,
|
||||
} pageout_t;
|
||||
|
||||
extern pageout_t pageout(struct page *page, struct address_space *mapping);
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
extern int zone_reclaim_mode;
|
||||
@@ -188,25 +203,6 @@ static inline int zone_reclaim(struct zone *z, gfp_t mask, unsigned int order)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MIGRATION
|
||||
extern int isolate_lru_page(struct page *p);
|
||||
extern int putback_lru_pages(struct list_head *l);
|
||||
extern int migrate_page(struct page *, struct page *);
|
||||
extern void migrate_page_copy(struct page *, struct page *);
|
||||
extern int migrate_page_remove_references(struct page *, struct page *, int);
|
||||
extern int migrate_pages(struct list_head *l, struct list_head *t,
|
||||
struct list_head *moved, struct list_head *failed);
|
||||
extern int fail_migrate_page(struct page *, struct page *);
|
||||
#else
|
||||
static inline int isolate_lru_page(struct page *p) { return -ENOSYS; }
|
||||
static inline int putback_lru_pages(struct list_head *l) { return 0; }
|
||||
static inline int migrate_pages(struct list_head *l, struct list_head *t,
|
||||
struct list_head *moved, struct list_head *failed) { return -ENOSYS; }
|
||||
/* Possible settings for the migrate_page() method in address_operations */
|
||||
#define migrate_page NULL
|
||||
#define fail_migrate_page NULL
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
/* linux/mm/shmem.c */
|
||||
extern int shmem_unuse(swp_entry_t entry, struct page *page);
|
||||
|
||||
@@ -20,6 +20,10 @@ struct work_struct {
|
||||
struct timer_list timer;
|
||||
};
|
||||
|
||||
struct execute_work {
|
||||
struct work_struct work;
|
||||
};
|
||||
|
||||
#define __WORK_INITIALIZER(n, f, d) { \
|
||||
.entry = { &(n).entry, &(n).entry }, \
|
||||
.func = (f), \
|
||||
@@ -74,6 +78,8 @@ extern void init_workqueues(void);
|
||||
void cancel_rearming_delayed_work(struct work_struct *work);
|
||||
void cancel_rearming_delayed_workqueue(struct workqueue_struct *,
|
||||
struct work_struct *);
|
||||
int execute_in_process_context(void (*fn)(void *), void *,
|
||||
struct execute_work *);
|
||||
|
||||
/*
|
||||
* Kill off a pending schedule_delayed_work(). Note that the work callback
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
#ifndef X25_KERNEL_H
|
||||
#define X25_KERNEL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0)
|
||||
#define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1)
|
||||
#define SIOCX25GFACILITIES (SIOCPROTOPRIVATE + 2)
|
||||
@@ -21,6 +23,8 @@
|
||||
#define SIOCX25SCUDMATCHLEN (SIOCPROTOPRIVATE + 7)
|
||||
#define SIOCX25CALLACCPTAPPRV (SIOCPROTOPRIVATE + 8)
|
||||
#define SIOCX25SENDCALLACCPT (SIOCPROTOPRIVATE + 9)
|
||||
#define SIOCX25GDTEFACILITIES (SIOCPROTOPRIVATE + 10)
|
||||
#define SIOCX25SDTEFACILITIES (SIOCPROTOPRIVATE + 11)
|
||||
|
||||
/*
|
||||
* Values for {get,set}sockopt.
|
||||
@@ -77,6 +81,8 @@ struct x25_subscrip_struct {
|
||||
#define X25_MASK_PACKET_SIZE 0x04
|
||||
#define X25_MASK_WINDOW_SIZE 0x08
|
||||
|
||||
#define X25_MASK_CALLING_AE 0x10
|
||||
#define X25_MASK_CALLED_AE 0x20
|
||||
|
||||
|
||||
/*
|
||||
@@ -98,6 +104,26 @@ struct x25_facilities {
|
||||
unsigned int reverse;
|
||||
};
|
||||
|
||||
/*
|
||||
* ITU DTE facilities
|
||||
* Only the called and calling address
|
||||
* extension are currently implemented.
|
||||
* The rest are in place to avoid the struct
|
||||
* changing size if someone needs them later
|
||||
*/
|
||||
|
||||
struct x25_dte_facilities {
|
||||
__u16 delay_cumul;
|
||||
__u16 delay_target;
|
||||
__u16 delay_max;
|
||||
__u8 min_throughput;
|
||||
__u8 expedited;
|
||||
__u8 calling_len;
|
||||
__u8 called_len;
|
||||
__u8 calling_ae[20];
|
||||
__u8 called_ae[20];
|
||||
};
|
||||
|
||||
/*
|
||||
* Call User Data structure.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user