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) |
OS_PORT ported to Linux (2.6.9+ for now)
#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 |
Possible return value of 'modern' ISR routine.
Referenced by asrc_isr(), csi_enc_callback(), csi_irq_handler(), mxc_rtc_interrupt(), pmic_irq_handler(), prp_enc_callback(), prp_still_callback(), prpvf_sdc_vsync_callback(), prpvf_vf_eof_callback(), snvs_rtc_interrupt(), and vpu_ipi_irq_handler().
#define IRQ_RETVAL | ( | x | ) |
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 | ) |
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
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
code | An error code to report success or failure. |
Referenced by OS_DEV_INIT().
#define os_dev_ioctl_return | ( | code | ) |
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
code | An error code to report success or failure. |
Referenced by OS_DEV_IOCTL().
#define os_dev_isr_return | ( | code | ) |
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.
code | non-zero if interrupt handled, zero otherwise. |
Referenced by OS_DEV_ISR().
#define os_dev_open_return | ( | code | ) |
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
code | An error code to report success or failure. |
Referenced by OS_DEV_OPEN().
#define os_dev_read_return | ( | code | ) |
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
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
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.
Referenced by OS_DEV_TASK().
#define os_dev_task_return | ( | code | ) |
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.
code | An error code to report success or failure. |
Referenced by OS_DEV_TASK().
#define os_dev_write_return | ( | code | ) |
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
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 |
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 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.
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().
enum os_error_code |
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.
© Freescale Semiconductor, Inc., 2007.
All rights reserved. Freescale Confidential Proprietary NDA Required |
![]() |