Example #1
0
/* n_hdlc_alloc()
 * 
 * 	Allocate an n_hdlc instance data structure
 *
 * Arguments:		None
 * Return Value:	pointer to structure if success, otherwise 0	
 */
static struct n_hdlc *n_hdlc_alloc (void)
{
	struct n_hdlc	*n_hdlc;
	N_HDLC_BUF	*buf;
	int		i;
	
	n_hdlc = (struct n_hdlc *)kmalloc(sizeof(struct n_hdlc), GFP_KERNEL);
	if (!n_hdlc)
		return 0;

	memset(n_hdlc, 0, sizeof(*n_hdlc));

	n_hdlc_buf_list_init(&n_hdlc->rx_free_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->tx_free_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->rx_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->tx_buf_list);
	
	/* allocate free rx buffer list */
	for(i=0;i<DEFAULT_RX_BUF_COUNT;i++) {
		buf = (N_HDLC_BUF*)kmalloc(N_HDLC_BUF_SIZE,GFP_KERNEL);
		if (buf)
			n_hdlc_buf_put(&n_hdlc->rx_free_buf_list,buf);
		else if (debuglevel >= DEBUG_LEVEL_INFO)	
			printk("%s(%d)n_hdlc_alloc(), kalloc() failed for rx buffer %d\n",__FILE__,__LINE__, i);
	}
	
	/* allocate free tx buffer list */
	for(i=0;i<DEFAULT_TX_BUF_COUNT;i++) {
		buf = (N_HDLC_BUF*)kmalloc(N_HDLC_BUF_SIZE,GFP_KERNEL);
		if (buf)
			n_hdlc_buf_put(&n_hdlc->tx_free_buf_list,buf);
		else if (debuglevel >= DEBUG_LEVEL_INFO)	
			printk("%s(%d)n_hdlc_alloc(), kalloc() failed for tx buffer %d\n",__FILE__,__LINE__, i);
	}
	
	/* Initialize the control block */
	n_hdlc->magic  = HDLC_MAGIC;

	n_hdlc->flags  = 0;
	init_waitqueue_head(&n_hdlc->read_wait);
	init_waitqueue_head(&n_hdlc->poll_wait);
	init_waitqueue_head(&n_hdlc->write_wait);
	
	return n_hdlc;
	
}	/* end of n_hdlc_alloc() */
Example #2
0
/**
 * n_hdlc_alloc - allocate an n_hdlc instance data structure
 *
 * Returns a pointer to newly created structure if success, otherwise %NULL
 */
static struct n_hdlc *n_hdlc_alloc(void)
{
	struct n_hdlc_buf *buf;
	int i;
	struct n_hdlc *n_hdlc = kmalloc(sizeof(*n_hdlc), GFP_KERNEL);

	if (!n_hdlc)
		return NULL;

	memset(n_hdlc, 0, sizeof(*n_hdlc));

	n_hdlc_buf_list_init(&n_hdlc->rx_free_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->tx_free_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->rx_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->tx_buf_list);

	/* allocate free rx buffer list */
	for(i=0;i<DEFAULT_RX_BUF_COUNT;i++) {
		buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
		if (buf)
			n_hdlc_buf_put(&n_hdlc->rx_free_buf_list,buf);
		else
			pr_debug("%s(%d)n_hdlc_alloc(), kalloc() failed for rx buffer %d\n",
					__FILE__,__LINE__, i);
	}

	/* allocate free tx buffer list */
	for(i=0;i<DEFAULT_TX_BUF_COUNT;i++) {
		buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
		if (buf)
			n_hdlc_buf_put(&n_hdlc->tx_free_buf_list,buf);
		else
			pr_debug("%s(%d)n_hdlc_alloc(), kalloc() failed for tx buffer %d\n",
					__FILE__,__LINE__, i);
	}

	/* Initialize the control block */
	n_hdlc->magic  = HDLC_MAGIC;
	n_hdlc->flags  = 0;

	return n_hdlc;

}	/* end of n_hdlc_alloc() */
static struct n_hdlc *n_hdlc_alloc(void)
{
	struct n_hdlc_buf *buf;
	int i;
	struct n_hdlc *n_hdlc = kmalloc(sizeof(*n_hdlc), GFP_KERNEL);

	if (!n_hdlc)
		return NULL;

	memset(n_hdlc, 0, sizeof(*n_hdlc));

	n_hdlc_buf_list_init(&n_hdlc->rx_free_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->tx_free_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->rx_buf_list);
	n_hdlc_buf_list_init(&n_hdlc->tx_buf_list);
	
	
	for(i=0;i<DEFAULT_RX_BUF_COUNT;i++) {
		buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
		if (buf)
			n_hdlc_buf_put(&n_hdlc->rx_free_buf_list,buf);
		else if (debuglevel >= DEBUG_LEVEL_INFO)	
			printk("%s(%d)n_hdlc_alloc(), kalloc() failed for rx buffer %d\n",__FILE__,__LINE__, i);
	}
	
	
	for(i=0;i<DEFAULT_TX_BUF_COUNT;i++) {
		buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
		if (buf)
			n_hdlc_buf_put(&n_hdlc->tx_free_buf_list,buf);
		else if (debuglevel >= DEBUG_LEVEL_INFO)	
			printk("%s(%d)n_hdlc_alloc(), kalloc() failed for tx buffer %d\n",__FILE__,__LINE__, i);
	}
	
	
	n_hdlc->magic  = HDLC_MAGIC;
	n_hdlc->flags  = 0;
	
	return n_hdlc;
	
}	
Example #4
0
/**
 * n_hdlc_alloc - allocate an n_hdlc instance data structure
 *
 * Returns a pointer to newly created structure if success, otherwise %NULL
 */
static struct n_hdlc *n_hdlc_alloc(void)
{
    struct n_hdlc_buf *buf;
    int i;
    struct n_hdlc *n_hdlc = kmalloc(sizeof(*n_hdlc), GFP_KERNEL);

    if (!n_hdlc)
        return NULL;

    memset(n_hdlc, 0, sizeof(*n_hdlc));

    n_hdlc_buf_list_init(&n_hdlc->rx_free_buf_list);
    n_hdlc_buf_list_init(&n_hdlc->tx_free_buf_list);
    n_hdlc_buf_list_init(&n_hdlc->rx_buf_list);
    n_hdlc_buf_list_init(&n_hdlc->tx_buf_list);

    /* allocate free rx buffer list */
    for(i=0; i<DEFAULT_RX_BUF_COUNT; i++) {
        buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
        if (buf)
            n_hdlc_buf_put(&n_hdlc->rx_free_buf_list,buf);
        else if (debuglevel >= DEBUG_LEVEL_INFO)
            ;
    }

    /* allocate free tx buffer list */
    for(i=0; i<DEFAULT_TX_BUF_COUNT; i++) {
        buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
        if (buf)
            n_hdlc_buf_put(&n_hdlc->tx_free_buf_list,buf);
        else if (debuglevel >= DEBUG_LEVEL_INFO)
            ;
    }

    /* Initialize the control block */
    n_hdlc->magic  = HDLC_MAGIC;
    n_hdlc->flags  = 0;

    return n_hdlc;

}	/* end of n_hdlc_alloc() */