/* Insert a new node in front of the n_act node  */
void* _lv_ll_ins_prev(lv_ll_t *ll_p, void *n_act)
/* Insert a new node in front of the n_act node  */
void* _lv_ll_ins_prev(lv_ll_t *ll_p, void *n_act)
{
    lv_ll_node_t * n_new;
    if(NULL == ll_p || NULL == n_act) return NULL;
    if(_lv_ll_get_head(ll_p) == n_act) {
        n_new = _lv_ll_ins_head(ll_p);
        if(n_new == NULL) return NULL;
    }
    else {
        n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE);
        if(n_new == NULL) return NULL;
        lv_ll_node_t * n_prev;
        n_prev = _lv_ll_get_prev(ll_p, n_act);
        node_set_next(ll_p, n_prev, n_new);
        node_set_prev(ll_p, n_new, n_prev);
        node_set_prev(ll_p, n_act, n_new);
        node_set_next(ll_p, n_new, n_act);
    }
    return n_new;
}