/* Performs periodic work needed by all the various kinds of dpifs.
*
- * If your program opens any dpifs, it must call this function within its main
- * poll loop. */
+ * If your program opens any dpifs, it must call both this function and
+ * netdev_run() within its main poll loop. */
void
dp_run(void)
{
/* Arranges for poll_block() to wake up when dp_run() needs to be called.
*
- * If your program opens any dpifs, it must call this function within its main
- * poll loop. */
+ * If your program opens any dpifs, it must call both this function and
+ * netdev_wait() within its main poll loop. */
void
dp_wait(void)
{
}
}
-/* Initializes 'all_dps' and enumerates the names of all known created
- * datapaths, where possible, into it. Returns 0 if successful, otherwise a
- * positive errno value.
+/* Clears 'all_dps' and enumerates the names of all known created datapaths,
+ * where possible, into it. The caller must first initialize 'all_dps'.
+ * Returns 0 if successful, otherwise a positive errno value.
*
* Some kinds of datapaths might not be practically enumerable. This is not
* considered an error. */
int error;
int i;
- svec_init(all_dps);
+ svec_clear(all_dps);
error = 0;
for (i = 0; i < N_DPIF_CLASSES; i++) {
const struct dpif_class *class = dpif_classes[i];
struct odp_port **portsp, size_t *n_portsp)
{
struct odp_port *ports;
- size_t n_ports;
+ size_t n_ports = 0;
int error;
for (;;) {