master/foe_request.c
branchstable-1.5
changeset 2464 e6cc33cac6a2
parent 1975 8e173dddd183
child 2522 ec403cf308eb
equal deleted inserted replaced
2463:71d38ff288b3 2464:e6cc33cac6a2
    56  */
    56  */
    57 void ec_foe_request_init(
    57 void ec_foe_request_init(
    58         ec_foe_request_t *req, /**< FoE request. */
    58         ec_foe_request_t *req, /**< FoE request. */
    59         uint8_t* file_name /** filename */)
    59         uint8_t* file_name /** filename */)
    60 {
    60 {
       
    61     INIT_LIST_HEAD(&req->list);
    61     req->buffer = NULL;
    62     req->buffer = NULL;
    62     req->file_name = file_name;
    63     req->file_name = file_name;
    63     req->buffer_size = 0;
    64     req->buffer_size = 0;
    64     req->data_size = 0;
    65     req->data_size = 0;
    65     req->dir = EC_DIR_INVALID;
    66     req->dir = EC_DIR_INVALID;
   107 int ec_foe_request_alloc(
   108 int ec_foe_request_alloc(
   108         ec_foe_request_t *req, /**< FoE request. */
   109         ec_foe_request_t *req, /**< FoE request. */
   109         size_t size /**< Data size to allocate. */
   110         size_t size /**< Data size to allocate. */
   110         )
   111         )
   111 {
   112 {
   112     if (size <= req->buffer_size)
   113     if (size <= req->buffer_size) {
   113         return 0;
   114         return 0;
       
   115     }
   114 
   116 
   115     ec_foe_request_clear_data(req);
   117     ec_foe_request_clear_data(req);
   116 
   118 
   117     if (!(req->buffer = (uint8_t *) kmalloc(size, GFP_KERNEL))) {
   119     if (!(req->buffer = (uint8_t *) kmalloc(size, GFP_KERNEL))) {
   118         EC_ERR("Failed to allocate %zu bytes of FoE memory.\n", size);
   120         EC_ERR("Failed to allocate %zu bytes of FoE memory.\n", size);
   119         return -1;
   121         return -ENOMEM;
   120     }
   122     }
   121 
   123 
   122     req->buffer_size = size;
   124     req->buffer_size = size;
   123     req->data_size = 0;
   125     req->data_size = 0;
   124     return 0;
   126     return 0;
   134         ec_foe_request_t *req, /**< FoE request. */
   136         ec_foe_request_t *req, /**< FoE request. */
   135         const uint8_t *source, /**< Source data. */
   137         const uint8_t *source, /**< Source data. */
   136         size_t size /**< Number of bytes in \a source. */
   138         size_t size /**< Number of bytes in \a source. */
   137         )
   139         )
   138 {
   140 {
   139     if (ec_foe_request_alloc(req, size))
   141     int ret;
   140         return -1;
   142 
       
   143     ret = ec_foe_request_alloc(req, size);
       
   144     if (ret) {
       
   145         return ret;
       
   146     }
   141 
   147 
   142     memcpy(req->buffer, source, size);
   148     memcpy(req->buffer, source, size);
   143     req->data_size = size;
   149     req->data_size = size;
   144     return 0;
   150     return 0;
   145 }
   151 }