参照元

説明

参考

実装

/**
 * struct ion_heap - represents a heap in the system
 * @node:               rb node to put the heap on the device's tree of heaps
 * @dev:                back pointer to the ion_device
 * @type:               type of heap
 * @ops:                ops struct as above
 * @flags:              flags
 * @id:                 id of heap, also indicates priority of this heap when
 *                      allocating.  These are specified by platform data and
 *                      MUST be unique
 * @name:               used for debugging
 * @shrinker:           a shrinker for the heap
 * @free_list:          free list head if deferred free is used
 * @free_list_size      size of the deferred free list in bytes
 * @lock:               protects the free list
 * @waitqueue:          queue to wait on from deferred free thread
 * @task:               task struct of deferred free thread
 * @debug_show:         called when heap debug file is read to add any
 *                      heap specific debug info to output
 *
 * Represents a pool of memory from which buffers can be made.  In some
 * systems the only heap is regular system memory allocated via vmalloc.
 * On others, some blocks might require large physically contiguous buffers
 * that are allocated from a specially reserved heap.
 */
struct ion_heap {
        struct plist_node node;
        struct ion_device *dev;
        enum ion_heap_type type;
        struct ion_heap_ops *ops;
        unsigned long flags;
        unsigned int id;
        const char *name;
        struct shrinker shrinker;
        struct list_head free_list;
        size_t free_list_size;
        spinlock_t free_lock;
        wait_queue_head_t waitqueue;
        struct task_struct *task;
        int (*debug_show)(struct ion_heap *heap, struct seq_file *, void *);
};

コメント


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS