다양한 종류의 파일시스템을 지원하기 위한 인터페이스 계층을 정의하고 구현한다. VFS 는 폴더와 파일의 계층 구조를 Binary tree 형태로 표현하고, 유지 관리한다. 다양한 종류의 파일 시스템들은 주어진 sinfo 구조체에 맞추어 함수를 구현한다. VFS 는 On-demand 형태로 tree 를 구축해 나간다. 즉, 실제 특정 폴더에 접근을 할 때, 해당 폴더의 자식 node 를 생성한다. 자식 노드들을 채우는 것은 파일시스템에서 구현한다.
더 자세히 ...
|
| struct ninfo * | vfs_get_ninfo_child (struct ninfo *node) |
| | 자식 노드를 가져온다. 더 자세히 ...
|
| |
| struct ninfo * | vfs_get_ninfo_parent (struct ninfo *node) |
| | 부모 노드를 가져온다. 현재 노드가 root 노드와 같다면 NULL 반환 더 자세히 ...
|
| |
| struct ninfo * | vfs_get_ninfo_next_sibling (struct ninfo *node) |
| | 다음 형제 노드를 가져온다. 더 자세히 ...
|
| |
| struct ninfo * | vfs_get_ninfo_prev_sibling (struct ninfo *node) |
| | 이전 형제 노드를 가져온다. 더 자세히 ...
|
| |
| struct sinfo * | vfs_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 ninfo * | vfs_get_ninfo (struct sinfo *sinfo, struct ninfo *node, const char *path) |
| | 주어진 노드를 기준으로, 경로에 해당하는 노드 정보를 가져온다. 더 자세히 ...
|
| |
| int | vfs_del_ninfo (struct ninfo *ninfo) |
| | 주어진 노드를 삭제한다. 이 때, 자식 노드들이 있으면 모두 함께 삭제 더 자세히 ...
|
| |
| struct ninfo * | vfs_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
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 |
|
) |
| |
저장 장치를 특정 노드와 연결시킨다.
- 매개변수
-
- 반환값
- int 성공시 0, 실패시 에러코드
| int vfs_deatch_storage |
( |
struct ninfo * |
node) | |
|
저장 장치를 특정 노드와의 연결을 끊는다.
- 매개변수
-
- 반환값
- int 성공시 0, 실패시 에러코드
| int vfs_del_ninfo |
( |
struct ninfo * |
ninfo) | |
|
주어진 노드를 삭제한다. 이 때, 자식 노드들이 있으면 모두 함께 삭제
- 매개변수
-
- 반환값
- int 성공시 0, 실패시 에러코드
- 주의
- The tmp node is not able to be deleted
-
Escape condition
| void vfs_free_ninfo |
( |
struct ninfo * |
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) | |
|
자식 노드를 가져온다.
- 매개변수
-
- 반환값
- struct ninfo* 현재 노드가 폴더가 아니거나, 자식이 없다면 NULL
| struct ninfo* vfs_get_ninfo_next_sibling |
( |
struct ninfo * |
node) | |
|
다음 형제 노드를 가져온다.
- 매개변수
-
- 반환값
- struct ninfo* 형제 노드
- 참고
- vfs_get_ninfo_prev()
| struct ninfo* vfs_get_ninfo_parent |
( |
struct ninfo * |
node) | |
|
부모 노드를 가져온다. 현재 노드가 root 노드와 같다면 NULL 반환
- 매개변수
-
- 반환값
- struct ninfo* 현재 노드가 root 이면 NULL, 아니면 부모 노드
| struct ninfo* vfs_get_ninfo_prev_sibling |
( |
struct ninfo * |
node) | |
|
이전 형제 노드를 가져온다.
- 매개변수
-
- 반환값
- struct ninfo* 형제 노드
- 참고
- vfs_get_ninfo_next()
VFS 를 초기화 한다.
- 반환값
- int 성공시 0, 실패시 에러코드
- 주의
- Initialize the s_root
-
Initialize the rootfs
주어진 노드에서 데이터를 읽어들인다.
- 매개변수
-
| [in] | node | 노드 |
| [in] | offset | 데이터를 읽을 시작 오프셋 |
| [in] | buf | 읽은 데이터를 저장할 버퍼 |
| [in] | size | 읽어들일 데이터의 크기 |
- 반환값
- int 성공시 읽은 데이터의 크기, 실패시 에러 값 또는 EOF
- 참고
- vfs_write_ninfo()
주어진 노드에 데이터를 쓴다
- 매개변수
-
| [in] | node | 노드 |
| [in] | offset | 데이터를 쓰기 위한 오프셋 |
| [in] | buf | 쓸 데이터가 저장된 버퍼 |
| [in] | size | 데이터의 크기 |
- 반환값
- int 성공시 기록한 데이터의 크기, 실패시 에러 값
- 참고
- vfs_read_ninfo()