blob: 1456eb4faa565c613aff4c313841c431fdbdadb2 [file] [log] [blame]
/* ********************************
* Author: Warren
* License: MobileTek
*//** @file link.h*//*
*
********************************/
#include "link.h"
#include <stdlib.h>
#include <string.h>
#include <log/log.h>
COND_NODE* createCondLinkHead()
{
COND_NODE *head = (COND_NODE *)malloc(sizeof(COND_NODE));
if(head==NULL)
{
return NULL;
}
memset(head,0,sizeof(COND_NODE));
head->next=NULL;
return head;
}
COND_NODE* initConditionLink()
{
COND_NODE* head = createCondLinkHead();
if(head==NULL)
{
return NULL;
}
return head;
}
COND_NODE * addCondLinkNode(COND_NODE *head,int32_t token,int index,pthread_cond_t cond)
{
COND_NODE* Node = (COND_NODE *)malloc(sizeof(COND_NODE));
memset(Node,0,sizeof(COND_NODE));
if (Node)
{
Node->token = token;
Node->cond = cond;
Node->cond_index=index;
Node->next = head;
head = Node;
//LYDBGLOG("[%s] node->token is %x,request is %d\n",__FUNCTION__,Node->token,Node->request);
}
else
{
//LYDBGLOG("[%s] malloc Node failed!\n",__FUNCTION__);
return head;
}
return head;
}
COND_NODE * DeleteLinkNode(int32_t token,COND_NODE *head)
{
COND_NODE *p,*temp;
p = head;
if((p ==NULL)||(p->next==NULL))
{
// LYDBGLOG("[%s] lynqDeQueue head is NULL\n",__FUNCTION__);
return 0;
//return head;
}
//delete head note
if(p->token == token)
{
temp=p->next;
free(p);
p =NULL;
// LYDBGLOG("[%s] delete head note!!\n",__FUNCTION__);
return temp;
//return head;
}
//delete intermediate node
do
{
temp = p;
p=p->next;
if(p->token==token)
{
temp->next=p->next;
free(p);
p=NULL;
// LYDBGLOG("[%s] delete intermediate node!!\n",__FUNCTION__);
return head;
}
}while(p->next->next!=NULL);
// LYDBGLOG("[%s] Not find this token,token is %d!!\n",__FUNCTION__,token);
return head;
}
COND_NODE * searchRequestinCondLink(int32_t token,COND_NODE *head)
{
COND_NODE *p;
p=head;
if(p!=NULL)
{
do
{
if(p->token == token)
{
RLOGD("[searchRequestinCondLink] search request %x success",token);
return p;
}
p = p->next;
} while (p != NULL);
}
return NULL;
}