Changeset 44186b01 in mainline


Ignore:
Timestamp:
2013-04-06T16:39:00Z (11 years ago)
Author:
Beniamino Galvani <b.galvani@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3deb0155
Parents:
f22f679
Message:

bcm2835: statically allocate framebuffer descriptor

Location:
kernel/genarch
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/include/genarch/drivers/bcm2835/mbox.h

    rf22f679 r44186b01  
    8484#define MBOX_ADDR_ALIGN         16
    8585
    86 #define ALLOC_PROP_BUFFER(name,type)                                    \
    87         char _tmp[sizeof(type) + MBOX_ADDR_ALIGN] = { 0 };              \
    88         type *name = (type *)ALIGN_UP((uint32_t)_tmp, MBOX_ADDR_ALIGN);
     86#define MBOX_BUFF_ALLOC(name, type)                                     \
     87        char tmp_ ## name[sizeof(type) + MBOX_ADDR_ALIGN] = { 0 };      \
     88        type *name = (type *)ALIGN_UP((uintptr_t)tmp_ ## name, MBOX_ADDR_ALIGN);
    8989
    9090typedef struct {
  • kernel/genarch/src/drivers/bcm2835/mbox.c

    rf22f679 r44186b01  
    3535
    3636#include <mm/km.h>
    37 #include <mm/slab.h>
    3837#include <typedefs.h>
    3938#include <genarch/drivers/bcm2835/mbox.h>
     
    6059{
    6160        bool ret;
    62         ALLOC_PROP_BUFFER(req, mbox_getmem_buf_t);
     61        MBOX_BUFF_ALLOC(req, mbox_getmem_buf_t);
    6362
    6463        req->buf_hdr.size = sizeof(mbox_getmem_buf_t);
     
    8887{
    8988        bcm2835_mbox_t *fb_mbox;
    90         bcm2835_fb_desc_t *fb_desc;
    91         void *fb_desc_buf;
    9289        bool ret = false;
    93 
    94         fb_desc_buf = malloc(sizeof(bcm2835_fb_desc_t) + MBOX_ADDR_ALIGN, 0);
    95         if (!fb_desc_buf)
    96                 return false;
     90        MBOX_BUFF_ALLOC(fb_desc, bcm2835_fb_desc_t);
    9791
    9892        fb_mbox = (void *) km_map(BCM2835_MBOX0_ADDR, sizeof(bcm2835_mbox_t),
    9993                                  PAGE_NOT_CACHEABLE);
    100         fb_desc = (bcm2835_fb_desc_t *) ALIGN_UP((uintptr_t)fb_desc_buf,
    101                                                  MBOX_ADDR_ALIGN);
    10294
    10395        fb_desc->width = 640;
     
    131123out:
    132124        km_unmap((uintptr_t)fb_mbox, sizeof(bcm2835_mbox_t));
    133         free(fb_desc_buf);
    134125        return ret;
    135126}
Note: See TracChangeset for help on using the changeset viewer.