tftpclient: converting to net sockets
[barrelfish] / lib / net / netbufs.c
index 6951f63..c2cf3c5 100644 (file)
@@ -40,8 +40,8 @@
  *
  * @return SYS_ERR_OK on success, errval on failure
  */
-errval_t net_buf_init(struct devq *dev_q, size_t numbuf, size_t size,
-                                struct net_buf_pool **retbp)
+errval_t net_buf_pool_alloc(struct devq *dev_q, size_t numbuf, size_t size,
+                            struct net_buf_pool **retbp)
 {
     errval_t err;
 
@@ -67,6 +67,11 @@ errval_t net_buf_init(struct devq *dev_q, size_t numbuf, size_t size,
     return SYS_ERR_OK;
 }
 
+errval_t net_buf_pool_free(struct net_buf_pool *retbp)
+{
+    return SYS_ERR_OK;
+}
+
 /**
  * @brief adds a previously allocated frame to the buffer pool
  *
@@ -87,6 +92,11 @@ errval_t net_buf_add(struct net_buf_pool *bp, struct capref frame, size_t buffer
     }
 
     reg->buffer_size = ROUND_UP(buffersize, NETWORKING_BUFFER_ALIGN);
+    reg->buffer_shift = 0;
+    while(!((reg->buffer_size >> reg->buffer_shift) & 0x1)) {
+        reg->buffer_shift++;
+    }
+
     reg->framecap = frame;
     reg->pool = bp;
 
@@ -245,7 +255,7 @@ void net_buf_free(struct pbuf *p)
     NETDEBUG("pbuf=%p\n", p);
 
     if (p->next) {
-        debug_printf("!!!!!! p->NEXT was not NULL\n");
+        debug_printf("!!!!!! p->NEXT was not NULL (%p)\n", p->next);
     }
 
    // printf("free: %p\n", p);
@@ -285,6 +295,9 @@ struct pbuf *net_buf_get_by_region(struct net_buf_pool *bp,
             assert((offset & (reg->buffer_size - 1)) == 0);
             assert(offset / reg->buffer_size < reg->pool->buffer_count);
             struct net_buf_p *nb = reg->netbufs + (offset / reg->buffer_size);
+
+            assert((offset / reg->buffer_size) == (offset >> reg->buffer_shift));
+
             assert(nb->offset == offset);
 
             return (struct pbuf *)nb;