completion(완료)는 kernel 동기화 기법중 하나입니다. 

API 는 아래와 같습니다.

#include <linux/completion.h>

DECLEAR_COMPLETION(struct completion comp);
init_completion(struct completion *comp);
void wailt_for_completion(struct completion *comp);
void complete(struct completion *comp);
void complete_all(struct completion *comp);

1. wait 을 걸때

#include <linux/module.h> 
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/kthread.h>
#include <linux/time.h>

struct completion comp;

static int wait(void)
{
  init_completion(&comp);
  wait_for_completion(&comp);


1. wait 을 풀때

#include <linux/module.h> 
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/kthread.h>
#include <linux/time.h>

struct completion comp;

static int un_wait(void)
{
  complete(&comp);



풀 동작하는 샘플 코드는 아래와 같이 첨부 파일을 참조 바랍니다.

completion.c

Makefile

 
블로그 이미지

김유석0

댓글을 달아 주세요