커 널 링크
추출 데이터 구조
list_entry (ptr, type, member)//type 데이터 구조 유형, member 는 list헤드 대응 멤버 명
노드 의 지침 을 되 돌려 줍 니 다.
이미 알 고 있 는 데이터 구조 에서 노드 포인터 ptr 는 데이터 구 조 를 찾 습 니 다. 예 를 들 어:
두루
list_for_each (struc list head * pos, struc list head * head)//실현 방법 을 기억 하 세 요.
pos 는 자동 으로 변 합 니 다. 순환 할 때마다 다음 노드 를 가리 킵 니 다.
예:
struct list_head *entry;
struct list_head cs46xx_devs;//체인 헤드
list_for_each(entry,&cs46xx_devs)
{
card = list_entry(entry,struct cs_card,list);
if(card->dev_midi == minor)
break;
}
예:
MODULE_ALIAS("List module");
struct student
{
char name[100];
int num;
struct list_head list;
};
struct student *pstudent;
struct student *tmp_student;
struct list_head student_list;
struct list_head *pos;
int mylist_init()
{
int i=0;
INIT_LIST_HEAD(&student_list);
pstudent = kmalloc(sizeof(struct student)*5,GFP_KERNEL);
memset(pstudent,0,sizeof(struct student)*5);
for(i=0;i<5;i++)
{
sprintf(pstudent[i].name,"Student %d",i+i);
pstudent[i].num = i+1;
list_add(&(pstudent[i].list), &student_list);
}
list_for_each(pos,&student_list)
{
tmp_student = list_entry(pos,struct student,list);
printk("<0>studnet %d name: %s
",tmp_student->num,tmp_studnet->name);
}
return 0;
}
void mylist_exit()
{
int i;
for()
{
list_del(&(pstudent[i].list));
}
kfree(pstudent);
}
module_inti(mylist_init);
module_exit(mylist_exit);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux 소스 코드의 컨테이너:listentry요즘도 코드를 보고 있어서 보면 볼수록 수상하고 재미있어요.리스트와 관련된 문제에 부딪히면 쌍방향 순환 체인표의 기본적인 조작인 줄 알았는데, 결과는...list_entry는 다음과 같이 정의합니다. 설명: 구성원 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.