본문 바로가기
Research/SystemProg

printk 사용시 주의할 점...

by sunnyan 2005. 7. 27.
728x90
타입을 주의하여 사용하여야 한다. 가령 예를 들어, 다음에서 보면,

static int part_unlock (struct mtd_info *mtd, loff_t ofs, size_t len)
{
     struct mtd_part *part = PART(mtd);

     if ((len + ofs) > mtd->size)
         return -EINVAL;
     printk(__FUNCTION__ ": ofs = %Lx, part->offset = %lx, len = %lx n", ofs, part->offset, (unsigned int)len);
     return part->master->unlock(part->master, ofs + part->offset, len);
}

ofs는 loff_t 타입인데, loff_t 타입은 long long 타입의 typedef 이다.
따라서, ofs 값을 표시할 때, 위와 같이 %L (L은 long long type) 을 사용하지 않고, %l 이나, %x 등을 사용하면,
ofs 값이 제대로 출력되지 않을 뿐 아니라, 뒤에 출력하는 값마저 영향을 받아서 엉뚱한 값이 출력된다.
728x90