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;
        }
    }
  • 相关阅读:
    vue 手动挂载 $amount()
    Redis 主从配置
    DMA分区管理
    C# 构造函数里的base和this的区别
    SQL Server 数据库性能优化
    TCP和UDP的优缺点及区别
    Django框架初步应用简述
    前端vue框架应用雏形
    接口mock之moco
    python进阶(九)~~~协程、进程池、线程/进程/协程对比
  • 原文地址:https://www.cnblogs.com/mic-chen/p/14420014.html
Copyright © 2011-2022 走看看