콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

linux cache memory

cache memroy 실습

linux device driver, 8장을 실습 했다. 컴파일 하여 실행하기 전에는 어떻게 돌아가는지 잘 알 수 없다. scullc을 보고 따라하려 했으나 잘 모르겠다. 메모리를 cache로 선언하고 일반 메모리를 쓰듯이 하면 된다.

#include<linux/kernel.h>
#include<linux/init.h>
#include<linux/module.h>
#include <linux/slab.h>

#define scullc_quantum 16

/* declare one cache pointer: use it for all devices */
/* kmem_cache_t 가 kmem_cache로 변경됨*/
struct kmem_cache *scullc_cache;

static const char test[scullc_quantum]="123456789abcde";
static char* data;
static int __init hello_world_init(void) /* Constructor */
{
	int i;
	printk(KERN_INFO "hello, cache memory\n");
	/* memory 할당*/
	scullc_cache = kmem_cache_create("scullc", scullc_quantum*sizeof(char),
			0, SLAB_HWCACHE_ALIGN, NULL); /* no ctor */

	if (!scullc_cache) {
		printk(KERN_ERR "no memory. out.\n");
		return -ENOMEM;

	}
	/* allocate*/
	data = kmem_cache_alloc(scullc_cache, GFP_KERNEL);
	for (i=0;i<scullc_quantum;i++){
		data[i] = test[i];
	}
	printk(KERN_INFO "cache: pos: %p, size: %d\n",scullc_cache, sizeof(scullc_cache));
	printk(KERN_INFO "data: pos:%p, size: %d, %s\n",data, sizeof(data), data);
	return 0;
}
void __exit hello_world_exit(void)
{
	kmem_cache_free(scullc_cache, data);
	kmem_cache_destroy(scullc_cache);
	printk(KERN_INFO "good bye, cache memory\n");

}
module_init(hello_world_init);
module_exit(hello_world_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("now0930");
MODULE_DESCRIPTION("cache memory test");

cache 메모리를 얼마나 사용하고 있는지 알아보는 유틸리티가 있을 것 같은데 못 찾았다.

참조 사이트

  • struct and pointer
  • crash utility for Arm
  • curses.h 없을 경우

이 글 공유하기:

  • Tweet
발행일 2022-01-26글쓴이 이대원
카테고리 생활코딩 태그 c, cache, driver, memory

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 내비게이션

이전 글

linux usb driver xbox360(5)

다음 글

linux memory pools

2025 5월
일 월 화 수 목 금 토
 123
45678910
11121314151617
18192021222324
25262728293031
4월    

최신 글

  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01
  • positioner(I/P) 2025-04-26

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.