dba
DPRINTF("%d@%08"PRIx64"", prdt->dbc & 0x3fffff, prdt->dba);
uint64_t dba;
prdt->dba + skip, dbcsz);
ptr = paddr_guest2host(ahci_ctx(p->pr_sc), prdt->dba, dbcsz);
ptr = paddr_guest2host(ahci_ctx(p->pr_sc), prdt->dba, dbcsz);
dba_array_undel(dba->pages);
dba_array_FOREACH(dba->pages, page) {
dba_array_free(dba->pages);
free(dba);
dba_write(const char *fname, struct dba *dba)
dba_pages_write(dba->pages);
dba_macros_write(dba->macros);
dba_macro_new(struct dba *dba, int32_t im, const char *value,
entry = get_macro_entry(dba_array_get(dba->macros, im), value, np);
dba_array_add(entry->pages, dba_array_get(dba->pages,
struct dba *
struct dba *dba;
dba = mandoc_malloc(sizeof(*dba));
dba->pages = dba_array_new(npages, DBA_GROW);
dba->macros = dba_array_new(MACRO_MAX, 0);
dba_array_set(dba->macros, im, macro);
return dba;
dba_free(struct dba *dba)
dba_array_FOREACH(dba->macros, macro) {
dba_array_free(dba->macros);
struct dba *dba_new(int32_t);
void dba_free(struct dba *);
struct dba *dba_read(const char *);
int dba_write(const char *, struct dba *);
void dba_macro_new(struct dba *, int32_t,
struct dba *
struct dba *dba;
dba = dba_new(npages < 128 ? 128 : npages);
page = dba_page_new(dba->pages, pdata->arch,
dba_macro_new(dba, im, mdata->value, mdata->pp);
return dba;
mpages_merge(struct dba *dba, struct mparse *mp)
static void dbadd(struct dba *, struct mpage *);
if (mpage_dest->dba != NULL)
static void dbprune(struct dba *);
static void dbwrite(struct dba *);
dbadd(dba, mpage);
static void mpages_merge(struct dba *, struct mparse *);
dba_page_alias(mlink->mpage->dba, mlink->name, NAME_FILE);
dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->dsec);
dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->fsec);
dba_page_add(mlink->mpage->dba, DBP_ARCH, mlink->arch);
dba_page_add(mlink->mpage->dba, DBP_FILE, mlink->file);
dbadd(struct dba *dba, struct mpage *mpage)
mpage->dba = dba_page_new(dba->pages,
dba_page_add(mpage->dba, DBP_SECT, mpage->sec);
dba_page_alias(mpage->dba, key->key, key->mask);
dba_macro_add(dba->macros, i,
key->key, mpage->dba);
dbprune(struct dba *dba)
dba_array_FOREACH(dba->pages, page) {
dba_array_del(dba->pages);
dbwrite(struct dba *dba)
dba_array_start(dba->pages);
if (dba_array_next(dba->pages) == NULL) {
if (dba_write(MANDOC_DB "~", dba) != -1) {
if (dba_write(tfn, dba) == -1) {
struct dba *dba;
dba = nodb ? dba_new(128) : dba_read(MANDOC_DB);
if (dba != NULL) {
dbprune(dba);
dba = dba_new(128);
mpages_merge(dba, mp);
dbwrite(dba);
dba_free(dba);
dba = dba_new(128);
mpages_merge(dba, mp);
dbwrite(dba);
dba_free(dba);
struct dba_array *dba;