#ifdef CONFIG_EDAC_DEBUG
-EXPORT_SYMBOL(edac_mc_dump_channel);
void edac_mc_dump_channel(struct channel_info *chan)
{
debugf4("\tchannel->label = '%s'\n", chan->label);
debugf4("\tchannel->csrow = %p\n\n", chan->csrow);
}
+EXPORT_SYMBOL(edac_mc_dump_channel);
-EXPORT_SYMBOL(edac_mc_dump_csrow);
-
void edac_mc_dump_csrow(struct csrow_info *csrow)
{
debugf4("\tcsrow = %p\n", csrow);
debugf4("\tcsrow->channels = %p\n", csrow->channels);
debugf4("\tcsrow->mci = %p\n\n", csrow->mci);
}
+EXPORT_SYMBOL(edac_mc_dump_csrow);
-EXPORT_SYMBOL(edac_mc_dump_mci);
-
void edac_mc_dump_mci(struct mem_ctl_info *mci)
{
debugf3("\tmci = %p\n", mci);
mci->mod_name, mci->ctl_name);
debugf3("\tpvt_info = %p\n\n", mci->pvt_info);
}
+EXPORT_SYMBOL(edac_mc_dump_mci);
#endif /* CONFIG_EDAC_DEBUG */
}
-EXPORT_SYMBOL(edac_mc_alloc);
-
/**
* edac_mc_alloc: Allocate a struct mem_ctl_info structure
* @size_pvt: size of private storage needed
return mci;
}
+EXPORT_SYMBOL(edac_mc_alloc);
-EXPORT_SYMBOL(edac_mc_free);
-
/**
* edac_mc_free: Free a previously allocated 'mci' structure
* @mci: pointer to a struct mem_ctl_info structure
{
kfree(mci);
}
+EXPORT_SYMBOL(edac_mc_free);
static struct mem_ctl_info *find_mci_by_pdev(struct pci_dev *pdev)
{
}
-EXPORT_SYMBOL(edac_mc_add_mc);
-
/**
* edac_mc_add_mc: Insert the 'mci' structure into the mci global list and
* create sysfs entries associated with mci structure
up(&mem_ctls_mutex);
return 1;
}
+EXPORT_SYMBOL(edac_mc_add_mc);
-EXPORT_SYMBOL(edac_mc_del_mc);
-
/**
* edac_mc_del_mc: Remove sysfs entries for specified mci structure and
* remove mci structure from global list
mci->mod_name, mci->ctl_name, pci_name(mci->pdev));
return mci;
}
+EXPORT_SYMBOL(edac_mc_del_mc);
-EXPORT_SYMBOL(edac_mc_scrub_block);
-
void edac_mc_scrub_block(unsigned long page, unsigned long offset,
u32 size)
{
if (PageHighMem(pg))
local_irq_restore(flags);
}
+EXPORT_SYMBOL(edac_mc_scrub_block);
/* FIXME - should return -1 */
-EXPORT_SYMBOL(edac_mc_find_csrow_by_page);
-
int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci,
unsigned long page)
{
return row;
}
+EXPORT_SYMBOL(edac_mc_find_csrow_by_page);
-EXPORT_SYMBOL(edac_mc_handle_ce);
-
/* FIXME - setable log (warning/emerg) levels */
/* FIXME - integrate with evlog: http://evlog.sourceforge.net/ */
void edac_mc_handle_ce(struct mem_ctl_info *mci,
mci->csrows[row].grain);
}
}
+EXPORT_SYMBOL(edac_mc_handle_ce);
-EXPORT_SYMBOL(edac_mc_handle_ce_no_info);
-
void edac_mc_handle_ce_no_info(struct mem_ctl_info *mci,
const char *msg)
{
mci->ce_noinfo_count++;
mci->ce_count++;
}
+EXPORT_SYMBOL(edac_mc_handle_ce_no_info);
-EXPORT_SYMBOL(edac_mc_handle_ue);
-
void edac_mc_handle_ue(struct mem_ctl_info *mci,
unsigned long page_frame_number,
unsigned long offset_in_page, int row,
mci->ue_count++;
mci->csrows[row].ue_count++;
}
+EXPORT_SYMBOL(edac_mc_handle_ue);
-EXPORT_SYMBOL(edac_mc_handle_ue_no_info);
-
void edac_mc_handle_ue_no_info(struct mem_ctl_info *mci,
const char *msg)
{
mci->ue_noinfo_count++;
mci->ue_count++;
}
+EXPORT_SYMBOL(edac_mc_handle_ue_no_info);
#ifdef CONFIG_PCI