Linux provides a quite sizable API for the allocation of page frames. All of them take a gfp_mask which determines how the allocator will behave which is discussed in Section 6.5.
As the allocation API functions eventually map onto one function the API's are there so the correct node and zone will be chosen for the allocation. Different users will need different zones such as DMA for certain device drivers or NORMAL for disk buffers. A full list of page allocation API's are listed in Table 6.1.
There is a similar API for the freeing of pages. They are a lot simpler and exist to help with the order of the block to free. One disadvantage of a buddy allocator is that the caller has to remember the size of the original allocation. The API for freeing is listed in Table 6.2.