ncloader  0.1
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 그룹들 페이지들
Virtual Filesystem

다양한 종류의 파일시스템을 지원하기 위한 인터페이스 계층을 정의하고 구현한다. VFS 는 폴더와 파일의 계층 구조를 Binary tree 형태로 표현하고, 유지 관리한다. 다양한 종류의 파일 시스템들은 주어진 sinfo 구조체에 맞추어 함수를 구현한다. VFS 는 On-demand 형태로 tree 를 구축해 나간다. 즉, 실제 특정 폴더에 접근을 할 때, 해당 폴더의 자식 node 를 생성한다. 자식 노드들을 채우는 것은 파일시스템에서 구현한다. 더 자세히 ...

+ Virtual Filesystem에 대한 협력 다이어그램:

데이타 구조

struct  ninfo
 Node information 를 정의한다. 더 자세히 ...
 
struct  sinfo
 

매크로

#define ROOT_NINFO   0
 

열거형 타입

enum  ntype { NINFO_TYPE_FOLDER, NINFO_TYPE_FILE }
 Node type 을 정의한다. 더 자세히 ...
 

함수

struct ninfovfs_get_ninfo_child (struct ninfo *node)
 자식 노드를 가져온다. 더 자세히 ...
 
struct ninfovfs_get_ninfo_parent (struct ninfo *node)
 부모 노드를 가져온다. 현재 노드가 root 노드와 같다면 NULL 반환 더 자세히 ...
 
struct ninfovfs_get_ninfo_next_sibling (struct ninfo *node)
 다음 형제 노드를 가져온다. 더 자세히 ...
 
struct ninfovfs_get_ninfo_prev_sibling (struct ninfo *node)
 이전 형제 노드를 가져온다. 더 자세히 ...
 
struct sinfovfs_get_last_sinfo (struct ninfo *node)
 주어진 노드에 가장 최근에 연결된 저장 장치 정보를 가져온다. 더 자세히 ...
 
ssize_t vfs_read_ninfo (struct ninfo *node, off_t offset, void *buf, size_t size)
 주어진 노드에서 데이터를 읽어들인다. 더 자세히 ...
 
ssize_t vfs_write_ninfo (struct ninfo *node, off_t offset, const void *buf, size_t size)
 주어진 노드에 데이터를 쓴다 더 자세히 ...
 
int vfs_init (void)
 VFS 를 초기화 한다. 더 자세히 ...
 
int vfs_attach_storage (struct ninfo *node, struct sinfo *sb)
 저장 장치를 특정 노드와 연결시킨다. 더 자세히 ...
 
int vfs_deatch_storage (struct ninfo *node)
 저장 장치를 특정 노드와의 연결을 끊는다. 더 자세히 ...
 
struct ninfovfs_get_ninfo (struct sinfo *sinfo, struct ninfo *node, const char *path)
 주어진 노드를 기준으로, 경로에 해당하는 노드 정보를 가져온다. 더 자세히 ...
 
int vfs_del_ninfo (struct ninfo *ninfo)
 주어진 노드를 삭제한다. 이 때, 자식 노드들이 있으면 모두 함께 삭제 더 자세히 ...
 
struct ninfovfs_alloc_ninfo (void)
 새로운 노드를 만든다. 더 자세히 ...
 
void vfs_free_ninfo (struct ninfo *node)
 노드에 할당된 자원을 해제한다. 더 자세히 ...
 

상세한 설명

다양한 종류의 파일시스템을 지원하기 위한 인터페이스 계층을 정의하고 구현한다. VFS 는 폴더와 파일의 계층 구조를 Binary tree 형태로 표현하고, 유지 관리한다. 다양한 종류의 파일 시스템들은 주어진 sinfo 구조체에 맞추어 함수를 구현한다. VFS 는 On-demand 형태로 tree 를 구축해 나간다. 즉, 실제 특정 폴더에 접근을 할 때, 해당 폴더의 자식 node 를 생성한다. 자식 노드들을 채우는 것은 파일시스템에서 구현한다.

VFS 구현을 위해 필요한 내부 자료구조와 함수를 정의한다.

날짜
2011.8.21
작성자
Sung-jae Park nices.nosp@m.j@ni.nosp@m.cesj..nosp@m.com
날짜
2011-8-26
작성자
Sung-jae Park nices.nosp@m.j@ni.nosp@m.cesj..nosp@m.com

매크로 문서화

#define ROOT_NINFO   0

열거형 타입 문서화

enum ntype

Node type 을 정의한다.

열거형 멤버
NINFO_TYPE_FOLDER 

폴더

NINFO_TYPE_FILE 

파일

함수 문서화

struct ninfo* vfs_alloc_ninfo ( void  )

새로운 노드를 만든다.

반환값
struct ninfo* 생성된 노드

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

int vfs_attach_storage ( struct ninfo node,
struct sinfo sb 
)

저장 장치를 특정 노드와 연결시킨다.

매개변수
[in]node
[in]sb
반환값
int 성공시 0, 실패시 에러코드

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

int vfs_deatch_storage ( struct ninfo node)

저장 장치를 특정 노드와의 연결을 끊는다.

매개변수
[in]node
반환값
int 성공시 0, 실패시 에러코드
int vfs_del_ninfo ( struct ninfo ninfo)

주어진 노드를 삭제한다. 이 때, 자식 노드들이 있으면 모두 함께 삭제

매개변수
[in]ninfo삭제할 노드
반환값
int 성공시 0, 실패시 에러코드
주의
The tmp node is not able to be deleted
Escape condition

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

void vfs_free_ninfo ( struct ninfo node)

노드에 할당된 자원을 해제한다.

매개변수
[in]node해제할 노드
반환값
void 없음

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

struct sinfo* vfs_get_last_sinfo ( struct ninfo node)

주어진 노드에 가장 최근에 연결된 저장 장치 정보를 가져온다.

매개변수
[in]node연결될 저장 장치 정보를 가져올 노드
반환값
struct sinfo* 저장 장치 정보, 없으면 NULL
struct ninfo* vfs_get_ninfo ( struct sinfo sinfo,
struct ninfo node,
const char *  path 
)

주어진 노드를 기준으로, 경로에 해당하는 노드 정보를 가져온다.

매개변수
[in]sinfo저장 장치 정보
[in]node노드 정보
[in]path경로
반환값
struct ninfo* 노드 포인터

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

struct ninfo* vfs_get_ninfo_child ( struct ninfo node)

자식 노드를 가져온다.

매개변수
[in]node부모노드
반환값
struct ninfo* 현재 노드가 폴더가 아니거나, 자식이 없다면 NULL

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

struct ninfo* vfs_get_ninfo_next_sibling ( struct ninfo node)

다음 형제 노드를 가져온다.

매개변수
[in]node현재 노드
반환값
struct ninfo* 형제 노드
참고
vfs_get_ninfo_prev()

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

struct ninfo* vfs_get_ninfo_parent ( struct ninfo node)

부모 노드를 가져온다. 현재 노드가 root 노드와 같다면 NULL 반환

매개변수
[in]node부모 노드를 가져올 노드
반환값
struct ninfo* 현재 노드가 root 이면 NULL, 아니면 부모 노드

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

struct ninfo* vfs_get_ninfo_prev_sibling ( struct ninfo node)

이전 형제 노드를 가져온다.

매개변수
[in]node현재 노드
반환값
struct ninfo* 형제 노드
참고
vfs_get_ninfo_next()
int vfs_init ( void  )

VFS 를 초기화 한다.

반환값
int 성공시 0, 실패시 에러코드
주의
Initialize the s_root
Initialize the rootfs

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

ssize_t vfs_read_ninfo ( struct ninfo node,
off_t  offset,
void *  buf,
size_t  size 
)

주어진 노드에서 데이터를 읽어들인다.

매개변수
[in]node노드
[in]offset데이터를 읽을 시작 오프셋
[in]buf읽은 데이터를 저장할 버퍼
[in]size읽어들일 데이터의 크기
반환값
int 성공시 읽은 데이터의 크기, 실패시 에러 값 또는 EOF
참고
vfs_write_ninfo()

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

ssize_t vfs_write_ninfo ( struct ninfo node,
off_t  offset,
const void *  buf,
size_t  size 
)

주어진 노드에 데이터를 쓴다

매개변수
[in]node노드
[in]offset데이터를 쓰기 위한 오프셋
[in]buf쓸 데이터가 저장된 버퍼
[in]size데이터의 크기
반환값
int 성공시 기록한 데이터의 크기, 실패시 에러 값
참고
vfs_read_ninfo()

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.: