2012-06-27 36 views

Trả lời

13

GFP = Nhận trang miễn phí = __get_free_pages.

Những cờ này là cờ được chuyển đến các chức năng cấp phát bộ nhớ, chẳng hạn như __get_free_pageskmalloc, cho họ biết những gì có thể và không thể thực hiện được khi phân bổ.

Ví dụ: GFP_ATOMIC nghĩa là không cần chuyển ngữ cảnh khi phân bổ (có nghĩa là không thể phân trang).

1

Hãy xem tệp include/linux/gfp.h để biết chi tiết.

100 /* This equals 0, but use constants in case they ever change */ 
101 #define GFP_NOWAIT  (GFP_ATOMIC & ~__GFP_HIGH) 
102 /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */ 
103 #define GFP_ATOMIC  (__GFP_HIGH) 
104 #define GFP_NOIO  (__GFP_WAIT) 
105 #define GFP_NOFS  (__GFP_WAIT | __GFP_IO) 
106 #define GFP_KERNEL  (__GFP_WAIT | __GFP_IO | __GFP_FS) 
107 #define GFP_TEMPORARY (__GFP_WAIT | __GFP_IO | __GFP_FS | \ 
108       __GFP_RECLAIMABLE) 
109 #define GFP_USER  (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL) 
110 #define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \ 
111       __GFP_HIGHMEM) 
112 #define GFP_HIGHUSER_MOVABLE (__GFP_WAIT | __GFP_IO | __GFP_FS | \ 
113         __GFP_HARDWALL | __GFP_HIGHMEM | \ 
114         __GFP_MOVABLE) 
115 #define GFP_IOFS  (__GFP_IO | __GFP_FS) 
116 #define GFP_TRANSHUGE (GFP_HIGHUSER_MOVABLE | __GFP_COMP | \ 
117       __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | \ 
118       __GFP_NO_KSWAPD) 
Các vấn đề liên quan