Changes in kernel/generic/src/mm/as.c [336db295:98000fb] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/as.c
r336db295 r98000fb 1920 1920 } 1921 1921 1922 /** Get list of adress space areas.1923 *1924 * @param as Address space.1925 * @param obuf Place to save pointer to returned buffer.1926 * @param osize Place to save size of returned buffer.1927 */1928 void as_get_area_info(as_t *as, as_area_info_t **obuf, size_t *osize)1929 {1930 ipl_t ipl;1931 size_t area_cnt, area_idx, i;1932 link_t *cur;1933 1934 as_area_info_t *info;1935 size_t isize;1936 1937 ipl = interrupts_disable();1938 mutex_lock(&as->lock);1939 1940 /* First pass, count number of areas. */1941 1942 area_cnt = 0;1943 1944 for (cur = as->as_area_btree.leaf_head.next;1945 cur != &as->as_area_btree.leaf_head; cur = cur->next) {1946 btree_node_t *node;1947 1948 node = list_get_instance(cur, btree_node_t, leaf_link);1949 area_cnt += node->keys;1950 }1951 1952 isize = area_cnt * sizeof(as_area_info_t);1953 info = malloc(isize, 0);1954 1955 /* Second pass, record data. */1956 1957 area_idx = 0;1958 1959 for (cur = as->as_area_btree.leaf_head.next;1960 cur != &as->as_area_btree.leaf_head; cur = cur->next) {1961 btree_node_t *node;1962 1963 node = list_get_instance(cur, btree_node_t, leaf_link);1964 1965 for (i = 0; i < node->keys; i++) {1966 as_area_t *area = node->value[i];1967 1968 ASSERT(area_idx < area_cnt);1969 mutex_lock(&area->lock);1970 1971 info[area_idx].start_addr = area->base;1972 info[area_idx].size = FRAMES2SIZE(area->pages);1973 info[area_idx].flags = area->flags;1974 ++area_idx;1975 1976 mutex_unlock(&area->lock);1977 }1978 }1979 1980 mutex_unlock(&as->lock);1981 interrupts_restore(ipl);1982 1983 *obuf = info;1984 *osize = isize;1985 }1986 1987 1988 1922 /** Print out information about address space. 1989 1923 *
Note:
See TracChangeset
for help on using the changeset viewer.