mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-23 05:31:28 +00:00
scst: Move backports from scst.h to backport.h - step 1
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6558 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -22,6 +22,162 @@
|
||||
|
||||
#include <linux/writeback.h> /* sync_page_range() */
|
||||
|
||||
/* <asm-generic/barrier.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
#define smp_mb__after_atomic_inc smp_mb__after_atomic
|
||||
#define smp_mb__after_clear_bit smp_mb__after_atomic
|
||||
#define smp_mb__before_atomic_dec smp_mb__before_atomic
|
||||
#define smp_mb__after_atomic_dec smp_mb__after_atomic
|
||||
#endif
|
||||
|
||||
/* <asm-generic/fcntl.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 32)
|
||||
#ifndef O_DSYNC
|
||||
#define O_DSYNC O_SYNC
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* <linux/compiler.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 20)
|
||||
#ifndef __printf
|
||||
#define __printf(a, b) __attribute__((format(printf,a,b)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 21)
|
||||
#ifndef __aligned
|
||||
#define __aligned(x) __attribute__((aligned(x)))
|
||||
#endif
|
||||
#ifndef __packed
|
||||
#define __packed __attribute__((packed))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
|
||||
/*
|
||||
* See also patch "Move ACCESS_ONCE() to <linux/compiler.h>" (commit ID
|
||||
* 9c3cdc1f83a6e07092392ff4aba6466517dbd1d0).
|
||||
*/
|
||||
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
|
||||
#endif
|
||||
|
||||
/* <linux/cpumask.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 20) && !defined(BACKPORT_LINUX_CPUMASK_H)
|
||||
#define nr_cpu_ids NR_CPUS
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28) && defined(__LINUX_CPUMASK_H)
|
||||
/*
|
||||
* See also patch "cpumask: introduce new API, without changing anything"
|
||||
* (commit ID 2d3854a37e8b).
|
||||
*/
|
||||
typedef cpumask_t cpumask_var_t[1];
|
||||
#define cpumask_bits(maskp) ((maskp)->bits)
|
||||
#ifdef CONFIG_CPUMASK_OFFSTACK
|
||||
/* Assuming NR_CPUS is huge, a runtime limit is more efficient. Also,
|
||||
* not all bits may be allocated. */
|
||||
#define nr_cpumask_bits nr_cpu_ids
|
||||
#else
|
||||
#define nr_cpumask_bits NR_CPUS
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPUMASK_OFFSTACK
|
||||
bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
|
||||
void free_cpumask_var(cpumask_var_t mask);
|
||||
#else
|
||||
static inline void free_cpumask_var(cpumask_var_t mask)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* verify cpu argument to cpumask_* operators */
|
||||
static inline unsigned int cpumask_check(unsigned int cpu)
|
||||
{
|
||||
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
||||
WARN_ON_ONCE(cpu >= nr_cpumask_bits);
|
||||
#endif /* CONFIG_DEBUG_PER_CPU_MAPS */
|
||||
return cpu;
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_next - get the next cpu in a cpumask
|
||||
* @n: the cpu prior to the place to search (ie. return will be > @n)
|
||||
* @srcp: the cpumask pointer
|
||||
*
|
||||
* Returns >= nr_cpu_ids if no further cpus set.
|
||||
*/
|
||||
static inline unsigned int cpumask_next(int n, const cpumask_t *srcp)
|
||||
{
|
||||
/* -1 is a legal arg here. */
|
||||
if (n != -1)
|
||||
cpumask_check(n);
|
||||
return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
|
||||
}
|
||||
|
||||
/**
|
||||
* for_each_cpu - iterate over every cpu in a mask
|
||||
* @cpu: the (optionally unsigned) integer iterator
|
||||
* @mask: the cpumask pointer
|
||||
*
|
||||
* After the loop, cpu is >= nr_cpu_ids.
|
||||
*/
|
||||
#define for_each_cpu(cpu, mask) \
|
||||
for ((cpu) = -1; \
|
||||
(cpu) = cpumask_next((cpu), (mask)), \
|
||||
(cpu) < nr_cpu_ids;)
|
||||
|
||||
/**
|
||||
* cpumask_set_cpu - set a cpu in a cpumask
|
||||
* @cpu: cpu number (< nr_cpu_ids)
|
||||
* @dstp: the cpumask pointer
|
||||
*/
|
||||
static inline void cpumask_set_cpu(unsigned int cpu, cpumask_t *dstp)
|
||||
{
|
||||
set_bit(cpu, cpumask_bits(dstp));
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_copy - *dstp = *srcp
|
||||
* @dstp: the result
|
||||
* @srcp: the input cpumask
|
||||
*/
|
||||
static inline void cpumask_copy(cpumask_t *dstp,
|
||||
const cpumask_t *srcp)
|
||||
{
|
||||
bitmap_copy(cpumask_bits(dstp), cpumask_bits(srcp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_setall - set all cpus (< nr_cpu_ids) in a cpumask
|
||||
* @dstp: the cpumask pointer
|
||||
*/
|
||||
static inline void cpumask_setall(cpumask_t *dstp)
|
||||
{
|
||||
bitmap_fill(cpumask_bits(dstp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_equal - *src1p == *src2p
|
||||
* @src1p: the first input
|
||||
* @src2p: the second input
|
||||
*/
|
||||
static inline bool cpumask_equal(const cpumask_t *src1p,
|
||||
const cpumask_t *src2p)
|
||||
{
|
||||
return bitmap_equal(cpumask_bits(src1p), cpumask_bits(src2p),
|
||||
nr_cpumask_bits);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* <linux/fs.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) && \
|
||||
@@ -52,4 +208,47 @@ static inline int vfs_fsync_backport(struct file *file, int datasync)
|
||||
#define vfs_fsync vfs_fsync_backport
|
||||
#endif
|
||||
|
||||
/* <linux/kernel.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
|
||||
#ifndef RHEL_RELEASE_CODE
|
||||
typedef _Bool bool;
|
||||
#endif
|
||||
#define true 1
|
||||
#define false 0
|
||||
#endif
|
||||
|
||||
/* <linux/lockdep.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
|
||||
#define lockdep_assert_held(l) do { (void)(l); } while (0)
|
||||
#endif
|
||||
|
||||
/* <linux/types.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
|
||||
/*
|
||||
* See also patch "fix abuses of ptrdiff_t" (commit ID
|
||||
* 142956af525002c5378e7d91d81a01189841a785).
|
||||
*/
|
||||
typedef unsigned long uintptr_t;
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
|
||||
char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap);
|
||||
#endif
|
||||
|
||||
/* <scsi/scsi_cmnd.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
|
||||
/*
|
||||
* See also patch "[SCSI] bidirectional command support"
|
||||
* (commit ID 6f9a35e2dafa).
|
||||
*/
|
||||
static inline int scsi_bidi_cmnd(struct scsi_cmnd *cmd)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SCST_BACKPORT_H_ */
|
||||
|
||||
@@ -71,195 +71,12 @@
|
||||
#include <scst_const.h>
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
#define smp_mb__after_atomic_inc smp_mb__after_atomic
|
||||
#define smp_mb__after_clear_bit smp_mb__after_atomic
|
||||
#define smp_mb__before_atomic_dec smp_mb__before_atomic
|
||||
#define smp_mb__after_atomic_dec smp_mb__after_atomic
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
|
||||
#ifndef RHEL_RELEASE_CODE
|
||||
typedef _Bool bool;
|
||||
#endif
|
||||
#define true 1
|
||||
#define false 0
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 21)
|
||||
#ifndef __packed
|
||||
#define __packed __attribute__((packed))
|
||||
#endif
|
||||
#ifndef __aligned
|
||||
#define __aligned(x) __attribute__((aligned(x)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
|
||||
char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap);
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
|
||||
#define lockdep_assert_held(l) do { (void)(l); } while (0)
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 32)
|
||||
#ifndef O_DSYNC
|
||||
#define O_DSYNC O_SYNC
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
|
||||
/*
|
||||
* See also patch "Move ACCESS_ONCE() to <linux/compiler.h>" (commit ID
|
||||
* 9c3cdc1f83a6e07092392ff4aba6466517dbd1d0).
|
||||
*/
|
||||
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
|
||||
#endif
|
||||
|
||||
#ifdef INSIDE_KERNEL_TREE
|
||||
#include <scst/scst_sgv.h>
|
||||
#else
|
||||
#include "scst_sgv.h"
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 20)
|
||||
#ifndef __printf
|
||||
#define __printf(a, b) __attribute__((format(printf,a,b)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 20) && !defined(BACKPORT_LINUX_CPUMASK_H)
|
||||
#define nr_cpu_ids NR_CPUS
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
|
||||
/*
|
||||
* See also patch "fix abuses of ptrdiff_t" (commit ID
|
||||
* 142956af525002c5378e7d91d81a01189841a785).
|
||||
*/
|
||||
typedef unsigned long uintptr_t;
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
|
||||
/*
|
||||
* See also patch "[SCSI] bidirectional command support"
|
||||
* (commit ID 6f9a35e2dafa).
|
||||
*/
|
||||
static inline int scsi_bidi_cmnd(struct scsi_cmnd *cmd)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28) && defined(__LINUX_CPUMASK_H)
|
||||
/*
|
||||
* See also patch "cpumask: introduce new API, without changing anything"
|
||||
* (commit ID 2d3854a37e8b).
|
||||
*/
|
||||
typedef cpumask_t cpumask_var_t[1];
|
||||
#define cpumask_bits(maskp) ((maskp)->bits)
|
||||
#ifdef CONFIG_CPUMASK_OFFSTACK
|
||||
/* Assuming NR_CPUS is huge, a runtime limit is more efficient. Also,
|
||||
* not all bits may be allocated. */
|
||||
#define nr_cpumask_bits nr_cpu_ids
|
||||
#else
|
||||
#define nr_cpumask_bits NR_CPUS
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPUMASK_OFFSTACK
|
||||
bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
|
||||
void free_cpumask_var(cpumask_var_t mask);
|
||||
#else
|
||||
static inline void free_cpumask_var(cpumask_var_t mask)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* verify cpu argument to cpumask_* operators */
|
||||
static inline unsigned int cpumask_check(unsigned int cpu)
|
||||
{
|
||||
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
||||
WARN_ON_ONCE(cpu >= nr_cpumask_bits);
|
||||
#endif /* CONFIG_DEBUG_PER_CPU_MAPS */
|
||||
return cpu;
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_next - get the next cpu in a cpumask
|
||||
* @n: the cpu prior to the place to search (ie. return will be > @n)
|
||||
* @srcp: the cpumask pointer
|
||||
*
|
||||
* Returns >= nr_cpu_ids if no further cpus set.
|
||||
*/
|
||||
static inline unsigned int cpumask_next(int n, const cpumask_t *srcp)
|
||||
{
|
||||
/* -1 is a legal arg here. */
|
||||
if (n != -1)
|
||||
cpumask_check(n);
|
||||
return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
|
||||
}
|
||||
|
||||
/**
|
||||
* for_each_cpu - iterate over every cpu in a mask
|
||||
* @cpu: the (optionally unsigned) integer iterator
|
||||
* @mask: the cpumask pointer
|
||||
*
|
||||
* After the loop, cpu is >= nr_cpu_ids.
|
||||
*/
|
||||
#define for_each_cpu(cpu, mask) \
|
||||
for ((cpu) = -1; \
|
||||
(cpu) = cpumask_next((cpu), (mask)), \
|
||||
(cpu) < nr_cpu_ids;)
|
||||
|
||||
/**
|
||||
* cpumask_set_cpu - set a cpu in a cpumask
|
||||
* @cpu: cpu number (< nr_cpu_ids)
|
||||
* @dstp: the cpumask pointer
|
||||
*/
|
||||
static inline void cpumask_set_cpu(unsigned int cpu, cpumask_t *dstp)
|
||||
{
|
||||
set_bit(cpu, cpumask_bits(dstp));
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_copy - *dstp = *srcp
|
||||
* @dstp: the result
|
||||
* @srcp: the input cpumask
|
||||
*/
|
||||
static inline void cpumask_copy(cpumask_t *dstp,
|
||||
const cpumask_t *srcp)
|
||||
{
|
||||
bitmap_copy(cpumask_bits(dstp), cpumask_bits(srcp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_setall - set all cpus (< nr_cpu_ids) in a cpumask
|
||||
* @dstp: the cpumask pointer
|
||||
*/
|
||||
static inline void cpumask_setall(cpumask_t *dstp)
|
||||
{
|
||||
bitmap_fill(cpumask_bits(dstp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
* cpumask_equal - *src1p == *src2p
|
||||
* @src1p: the first input
|
||||
* @src2p: the second input
|
||||
*/
|
||||
static inline bool cpumask_equal(const cpumask_t *src1p,
|
||||
const cpumask_t *src2p)
|
||||
{
|
||||
return bitmap_equal(cpumask_bits(src1p), cpumask_bits(src2p),
|
||||
nr_cpumask_bits);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26) && \
|
||||
(!defined(RHEL_MAJOR) || RHEL_MAJOR -0 < 6)
|
||||
#define set_cpus_allowed_ptr(p, new_mask) set_cpus_allowed((p), *(new_mask))
|
||||
|
||||
Reference in New Issue
Block a user