linux/drivers/mxc/security/sahara2/include/linux_port.h File Reference

Data Structures

struct  os_driver_reg_t

Defines

#define PORTABLE_OS_VERSION   101
#define __NO_VERSION__
#define TRUE   1
#define FALSE   0
#define irqreturn_t   void
#define IRQ_HANDLED
#define IRQ_RETVAL(x)
#define OS_WAIT_OBJECT(name)   DECLARE_WAIT_QUEUE_HEAD(name##_qh)
#define os_register_interrupt(driver_name, interrupt_id, function)   request_irq(interrupt_id, function, 0, driver_name, NULL)
#define os_deregister_interrupt(interrupt_id)   free_irq(interrupt_id, NULL)
#define os_driver_init_registration(handle)   os_drv_do_init_reg(&handle)
#define os_driver_add_registration(handle, name, function)   do {handle.fops.name = (void*)(function); } while (0)
#define os_driver_register_power_suspend(handle, function)   handle.dd.suspend = function
#define os_driver_register_resume(handle, function)   handle.dd.resume = function
#define os_driver_complete_registration(handle, major, driver_name)   os_drv_do_reg(&handle, major, driver_name)
#define os_driver_get_major(handle)   (handle.reg_complete ? MAJOR(handle.dev) : -1)
#define os_driver_remove_registration(handle)   os_drv_rmv_reg(&handle)
#define os_register_to_driver(driver_information)   driver_register(driver_information)
#define os_unregister_from_driver(driver_information)   driver_unregister(driver_information)
#define os_register_a_device(device_information)   platform_device_register(device_information)
#define os_unregister_a_device(device_information)   platform_device_unregister(device_information)
#define os_printk(...)   (void) printk(__VA_ARGS__)
#define os_create_task(function_name)   OS_ERROR_OK_S
#define os_dev_schedule_task(function_name)   tasklet_schedule(&(function_name ## let))
#define os_dev_stop_task(function_name)
#define os_alloc_memory(amount, flags)   (void*)kmalloc(amount, flags)
#define os_free_memory(location)   kfree(location)
#define os_alloc_coherent(amount, dma_addrp, flags)   (void*)dma_alloc_coherent(NULL, amount, dma_addrp, flags)
#define os_free_coherent(size, virt_addr, dma_addr)   dma_free_coherent(NULL, size, virt_addr, dma_addr
#define os_map_device(start, range_bytes)   (void*)ioremap_nocache((start), range_bytes)
#define os_unmap_device(start, range_bytes)   iounmap((void*)(start))
#define os_copy_to_user(to, from, size)   ((copy_to_user(to, from, size) == 0) ? 0 : OS_ERROR_BAD_ADDRESS_S)
#define os_copy_from_user(to, from, size)   ((copy_from_user(to, from, size) == 0) ? 0 : OS_ERROR_BAD_ADDRESS_S)
#define os_read8(register_address)   __raw_readb(register_address)
#define os_write8(register_address, value)   __raw_writeb(value, register_address)
#define os_read16(register_address)   __raw_readw(register_address)
#define os_write16(register_address, value)   __raw_writew(value, (uint32_t*)(register_address))
#define os_read32(register_address)   __raw_readl((uint32_t*)(register_address))
#define os_write32(register_address, value)   __raw_writel(value, register_address)
#define os_read64(register_address)   ERROR_UNIMPLEMENTED
#define os_write64(register_address, value)   ERROR_UNIMPLEMENTED
#define os_mdelay   mdelay
#define os_va   __va
#define os_pa   __pa
#define os_lock(lock_handle)   spin_lock(lock_handle)
#define os_unlock(lock_handle)   spin_unlock(lock_handle)
#define os_lock_save_context(lock_handle, context)   spin_lock_irqsave(lock_handle, context)
#define os_unlock_restore_context(lock_handle, context)   spin_unlock_irqrestore(lock_handle, context)
#define os_lock_deallocate(lock_handle)   kfree(lock_handle)
#define os_get_process_handle()   current
#define os_send_signal(proc, sig)   send_sig(sig, proc, 0);
#define os_get_random_bytes(buf, count)   get_random_bytes(buf, count)
#define os_sleep(object, condition, atomic)
#define os_wake_sleepers(object)   wake_up_interruptible(&(object##_qh));
#define OS_DEV_INIT(function_name)
#define OS_DEV_INIT_DCL(function_name)   static int __init function_name (void);
#define OS_DEV_INIT_REF(function_name)   function_name
#define OS_DEV_SHUTDOWN(function_name)
#define OS_DEV_SHUTDOWN_DCL(function_name)   static void function_name(void);
#define OS_DEV_SHUTDOWN_REF(function_name)   function_name
#define OS_DEV_OPEN(function_name)   static int function_name(struct inode* inode_p_, struct file* file_p_)
#define OS_DEV_OPEN_DCL(function_name)   OS_DEV_OPEN(function_name);
#define OS_DEV_OPEN_REF(function_name)   function_name
#define OS_DEV_IOCTL(function_name)
#define OS_DEV_IOCTL_DCL(function_name)   OS_DEV_IOCTL(function_name);
#define OS_DEV_IOCTL_REF(function_name)   function_name
#define OS_DEV_MMAP(function_name)   int function_name(struct file* file_p_, struct vm_area_struct* vma_)
#define OS_DEV_READ_DCL(function_name)   OS_DEV_READ(function_name);
#define OS_DEV_READ_REF(function_name)   function_name
#define OS_DEV_WRITE(function_name)
#define OS_DEV_WRITE_DCL(function_name)   OS_DEV_WRITE(function_name);
#define OS_DEV_WRITE_REF(function_name)   function_name
#define OS_DEV_CLOSE(function_name)   static int function_name(struct inode* inode_p_, struct file* file_p_)
#define OS_DEV_CLOSE_DCL(function_name)   OS_DEV_CLOSE(function_name);
#define OS_DEV_CLOSE_REF(function_name)   function_name
#define OS_DEV_ISR(function_name)   static irqreturn_t function_name(int N1_, void* N2_)
#define OS_DEV_ISR_DCL(function_name)   OS_DEV_ISR(function_name);
#define OS_DEV_ISR_REF(function_name)   function_name
#define OS_DEV_TASK(function_name)   static void function_name(unsigned long data_)
#define OS_DEV_TASK_DCL(function_name)
#define OS_DEV_TASK_REF(function_name)   (function_name ## let)
#define os_dev_init_return(code)   return code
#define os_dev_shutdown_return(code)   return
#define os_dev_isr_return(code)
#define os_dev_open_return(code)
#define os_dev_ioctl_return(code)
#define os_dev_read_return(code)
#define os_dev_write_return(code)
#define os_dev_close_return(code)
#define os_dev_task_begin()
#define os_dev_task_return(code)
#define os_dev_is_flag_read()   (file_p_->f_mode & FMODE_READ)
#define os_dev_is_flag_write()   (file_p_->f_mode & FMODE_WRITE)
#define os_dev_is_flag_nonblock()   (file_p_->f_flags & (O_NONBLOCK | O_NDELAY))
#define os_dev_get_major()   (imajor(inode_p_))
#define os_dev_get_minor()   (iminor(inode_p_))
#define os_dev_get_ioctl_op()   (cmd_)
#define os_dev_get_ioctl_arg()   (data_)
#define os_dev_get_count()   ((unsigned)count_bytes_)
#define os_dev_get_user_buffer()   ((void*)user_buffer_)
#define os_dev_get_file_flags()   (file_p_->f_flags)
#define os_dev_set_user_private(struct_p)   file_p_->private_data = (void*)(struct_p)
#define os_dev_get_user_private()   ((void*)file_p_->private_data)
#define os_dev_get_irq()   N1_
#define os_flush_cache_all()   v6_flush_kern_cache_all_L2()
#define os_cache_clean_range(start, len)
#define os_cache_inv_range(start, len)
#define os_cache_flush_range(start, len)

#define OS_FN_OPEN   open
#define OS_FN_CLOSE   release
#define OS_FN_READ   read
#define OS_FN_WRITE   write
#define OS_FN_IOCTL   unlocked_ioctl
#define OS_FN_MMAP   mmap

Typedefs

typedef int os_interrupt_id_t
typedef struct task_struct * os_process_handle_t
typedef spinlock_t * os_lock_t
typedef unsigned long os_lock_context_t
typedef int(* os_interrupt_handler_t )(int, void *)

Enumerations

enum  os_error_code {
  OS_ERROR_OK_S = 0,
  OS_ERROR_FAIL_S = -EIO,
  OS_ERROR_NO_MEMORY_S = -ENOMEM,
  OS_ERROR_BAD_ADDRESS_S = -EFAULT,
  OS_ERROR_BAD_ARG_S = -EINVAL,
  OS_ERROR_OK_S = 0,
  OS_ERROR_FAIL_S,
  OS_ERROR_NO_MEMORY_S,
  OS_ERROR_BAD_ADDRESS_S,
  OS_ERROR_BAD_ARG_S
}

Functions

static int os_drv_do_init_reg (os_driver_reg_t *handle)
static int os_drv_do_reg (os_driver_reg_t *handle, unsigned major, char *driver_name)
static int os_drv_rmv_reg (os_driver_reg_t *handle)
static os_lock_t os_lock_alloc_init (void)
void v6_flush_kern_cache_all_L2 (void)

Detailed Description

OS_PORT ported to Linux (2.6.9+ for now)


Define Documentation

#define __NO_VERSION__

__NO_VERSION__ defined due to Kernel module possibly spanning multiple files.

#define FALSE   0

Useful symbol for unsigned values used as flags.

#define IRQ_HANDLED
#define IRQ_RETVAL (  ) 

Method of generating value of 'modern' ISR routine.

Referenced by OS_DEV_ISR(), and sah_Intr_Top_Half().

#define irqreturn_t   void

Symbol defined somewhere in 2.5/2.6. It is the return signature of an ISR.

#define os_dev_close_return ( code   ) 
Value:
do {                                                                         \
    ssize_t retcode = code;                                                  \
                                                                             \
    /* get rid of 'unused parameter' warnings */                             \
    (void)inode_p_;                                                          \
    (void)file_p_;                                                           \
                                                                             \
    return retcode;                                                          \
} while (0)

Return from the OS_DEV_CLOSE() function

Parameters:
code An error code to report success or failure.

Referenced by OS_DEV_CLOSE().

#define os_dev_init_return ( code   )     return code

Return from the OS_DEV_INIT() function

Parameters:
code An error code to report success or failure.

Referenced by OS_DEV_INIT().

#define os_dev_ioctl_return ( code   ) 
Value:
do {                                                                         \
    int retcode = code;                                                      \
                                                                             \
    /* get rid of 'unused parameter' warnings */                             \
    (void)file_p_;                                                           \
    (void)cmd_;                                                              \
    (void)data_;                                                             \
                                                                             \
    return retcode;                                                          \
} while (0)

Return from the OS_DEV_IOCTL() function

Parameters:
code An error code to report success or failure.

Referenced by OS_DEV_IOCTL().

#define os_dev_isr_return ( code   ) 
Value:
do {                                                                         \
    /* Unused warnings */                                                    \
    (void)N1_;                                                               \
    (void)N2_;                                                               \
                                                                             \
    return IRQ_RETVAL(code);                                                 \
} while (0)

Return from the OS_DEV_ISR() function

The function should verify that it really was supposed to be called, and that its device needed attention, in order to properly set the return code.

Parameters:
code non-zero if interrupt handled, zero otherwise.

Referenced by OS_DEV_ISR().

#define os_dev_open_return ( code   ) 
Value:
do {                                                                         \
    int retcode = code;                                                      \
                                                                             \
    /* get rid of 'unused parameter' warnings */                             \
    (void)inode_p_;                                                          \
    (void)file_p_;                                                           \
                                                                             \
    return retcode;                                                          \
} while (0)

Return from the OS_DEV_OPEN() function

Parameters:
code An error code to report success or failure.

Referenced by OS_DEV_OPEN().

#define os_dev_read_return ( code   ) 
Value:
do {                                                                         \
    ssize_t retcode = code;                                                  \
                                                                             \
    /* get rid of 'unused parameter' warnings */                             \
    (void)file_p_;                                                           \
    (void)user_buffer_;                                                      \
    (void)count_bytes_;                                                      \
    (void)file_position_;                                                    \
                                                                             \
    return retcode;                                                          \
} while (0)

Return from the OS_DEV_READ() function

Parameters:
code Number of bytes read, or an error code to report failure.
#define os_dev_shutdown_return ( code   )     return

Return from the OS_DEV_SHUTDOWN() function

Parameters:
code An error code to report success or failure.

Referenced by OS_DEV_SHUTDOWN().

#define os_dev_task_begin ( void   ) 

Start the OS_DEV_TASK() function

In some implementations, this could be turned into a label for the os_dev_task_return() call.

Returns:
none

Referenced by OS_DEV_TASK().

#define os_dev_task_return ( code   ) 
Value:
do {                                                                         \
    /* Unused warnings */                                                    \
    (void)data_;                                                             \
                                                                             \
    return;                                                                  \
} while (0)

Return from the OS_DEV_TASK() function

In some implementations, this could be turned into a sleep followed by a jump back to the os_dev_task_begin() call.

Parameters:
code An error code to report success or failure.

Referenced by OS_DEV_TASK().

#define os_dev_write_return ( code   ) 
Value:
do {                                                                         \
    ssize_t retcode = code;                                                  \
                                                                             \
    /* get rid of 'unused parameter' warnings */                             \
    (void)file_p_;                                                           \
    (void)user_buffer_;                                                      \
    (void)count_bytes_;                                                      \
    (void)file_position_;                                                    \
                                                                             \
    return retcode;                                                          \
} while (0)

Return from the OS_DEV_WRITE() function

Parameters:
code Number of bytes written, or an error code to report failure.
#define OS_FN_CLOSE   release

Keyword for registering close() operation handler.

Referenced by OS_DEV_INIT(), rng_test_setup_user_driver_interaction(), and shw_setup_user_driver_interaction().

#define OS_FN_IOCTL   unlocked_ioctl

Keyword for registering ioctl() operation handler.

Referenced by OS_DEV_INIT(), rng_test_setup_user_driver_interaction(), and shw_setup_user_driver_interaction().

#define OS_FN_MMAP   mmap

Keyword for registering mmap() operation handler.

Referenced by OS_DEV_INIT(), and shw_setup_user_driver_interaction().

#define OS_FN_OPEN   open

Keyword for registering open() operation handler.

Referenced by OS_DEV_INIT(), rng_test_setup_user_driver_interaction(), and shw_setup_user_driver_interaction().

#define OS_FN_READ   read

Keyword for registering read() operation handler.

#define OS_FN_WRITE   write

Keyword for registering write() operation handler.

#define OS_WAIT_OBJECT ( name   )     DECLARE_WAIT_QUEUE_HEAD(name##_qh)

Declare a wait object for sleeping/waking processes.

#define PORTABLE_OS_VERSION   101

Introduction

This API / kernel programming environment blah blah.

See Driver-to-Kernel Operations as a good place to start.

#define TRUE   1

Useful symbol for unsigned values used as flags.


Typedef Documentation

typedef int(* os_interrupt_handler_t)(int, void *)

Function signature for the portable interrupt handler

While it would be nice to know which interrupt is being serviced, the Least Common Denominator rule says that no arguments get passed in.

Returns:
Zero if not handled, non-zero if handled.
typedef int os_interrupt_id_t

Type used for registering and deregistering interrupts.

typedef unsigned long os_lock_context_t

Context while locking.

typedef spinlock_t* os_lock_t

Handle to a lock.

typedef struct task_struct* os_process_handle_t

Type used as handle for a process

See os_get_process_handle() and os_send_signal().


Enumeration Type Documentation

Generic return code for functions which need such a thing.

No knowledge should be assumed of the value of any of these symbols except that OS_ERROR_OK_S is guaranteed to be zero.

Enumerator:
OS_ERROR_OK_S 

Success

OS_ERROR_FAIL_S 

Generic driver failure

OS_ERROR_NO_MEMORY_S 

Failure to acquire/use memory

OS_ERROR_BAD_ADDRESS_S 

Bad address

OS_ERROR_BAD_ARG_S 

Bad input argument

OS_ERROR_OK_S 

Success

OS_ERROR_FAIL_S 

Generic driver failure

OS_ERROR_NO_MEMORY_S 

Failure to acquire/use memory

OS_ERROR_BAD_ADDRESS_S 

Bad address

OS_ERROR_BAD_ARG_S 

Bad input argument

footer
©  Freescale Semiconductor, Inc., 2007.  All rights reserved.
Freescale Confidential Proprietary
NDA Required
doxygen