zoukankan      html  css  js  c++  java
  • 通用循环队列

    /*********************************************************************************************************
      queue
    *********************************************************************************************************/
    struct queue {
        uint32_t max_size;
        uint8_t  **pbase;
        uint32_t front;
        uint32_t rear;
    };
    
    static int queue_init(struct queue *queue, int size)
    {
        queue->pbase = bios_malloc(sizeof(uint8_t *)*size);
        if(NULL == queue->pbase) {
            bios_err(": malloc error
    ");
            return -1;
        }
        queue->max_size = size;
        queue->front = 0;
        queue->rear = 0;
    
        return 0;
    }
    
    static int queue_is_empty(struct queue *queue)
    {
        if(queue->front == queue->rear) {
            return 1;
        } else {
            return 0;
        }
    }
    
    static int queue_is_full(struct queue *queue)
    {
        if((queue->rear +1)%queue->max_size == queue->front) {
            return 1;
        } else {
            return 0;
        }
    }
    
    
    static int queue_in(struct queue *queue, uint8_t *val)
    {
        if(queue_is_full(queue)) {
            bios_log("fe rx queue full
    ");
            return 0;
        } else {
            //bios_log("queue in %0x
    ", val);
            queue->pbase[queue->rear]= val;
            queue->rear=(queue->rear+1)%queue->max_size;
            return 1;
        }
    }
    
    static int queue_out(struct queue *queue, uint8_t **val)
    {
        if(queue_is_empty(queue)){
            return 0;
        } else {
            *val = queue->pbase[queue->front];
            //bios_log("queue out %0x
    ", *val);
            queue->front=(queue->front+1)%queue->max_size;
            return 1;
        }
    }
  • 相关阅读:
    HashCode和equal方法
    Quartz.NET 学习笔记整理(一)
    XAML学习笔记(一)
    【转】21个经典的哲理故事
    关于List<T>集合中的差集
    batch files
    Maintenance Plans in MS SQL 2005
    Telerik
    What is DeltaCopy
    How to Insert Values into an Identity Column in SQL Server
  • 原文地址:https://www.cnblogs.com/mic-chen/p/14420014.html
Copyright © 2011-2022 走看看