int zmq::socket_base_t::monitor (const char *addr_, int events_) { int rc; if (unlikely (ctx_terminated)) { errno = ETERM; return -1; } // Support deregistering monitoring endpoints as well if (addr_ == NULL) { stop_monitor (); return 0; } // Parse addr_ string. std::string protocol; std::string address; rc = parse_uri (addr_, protocol, address); if (rc != 0) return -1; rc = check_protocol (protocol); if (rc != 0) return -1; // Event notification only supported over inproc:// if (protocol != "inproc") { errno = EPROTONOSUPPORT; return -1; } // Register events to monitor monitor_events = events_; monitor_socket = zmq_socket (get_ctx (), ZMQ_PAIR); if (monitor_socket == NULL) return -1; // Never block context termination on pending event messages int linger = 0; rc = zmq_setsockopt (monitor_socket, ZMQ_LINGER, &linger, sizeof (linger)); if (rc == -1) stop_monitor (); // Spawn the monitor socket endpoint rc = zmq_bind (monitor_socket, addr_); if (rc == -1) stop_monitor (); return rc; }
static int gov_suspend(struct devfreq *df) { struct hwmon_node *node = df->data; unsigned long resume_freq = df->previous_freq; unsigned long resume_ab = *node->dev_ab; if (!node->hw->suspend_hwmon) return -ENOSYS; if (node->resume_freq) { dev_warn(df->dev.parent, "Governor already suspended!\n"); return -EBUSY; } stop_monitor(df, false); mutex_lock(&df->lock); update_devfreq(df); mutex_unlock(&df->lock); node->resume_freq = resume_freq; node->resume_ab = resume_ab; return 0; }
void zmq::socket_base_t::process_stop () { // Here, someone have called zmq_term while the socket was still alive. // We'll remember the fact so that any blocking call is interrupted and any // further attempt to use the socket will return ETERM. The user is still // responsible for calling zmq_close on the socket though! stop_monitor (); ctx_terminated = true; }
zmq::socket_base_t::~socket_base_t () { stop_monitor (); if(tx_transport && tx_transport->tx_destroy()) delete tx_transport; zmq_assert (destroyed); }
zmq::socket_base_t::~socket_base_t () { delete mailbox; if (reaper_signaler) delete reaper_signaler; stop_monitor (); zmq_assert (destroyed); }
zmq::socket_base_t::~socket_base_t () { LIBZMQ_DELETE(mailbox); if (reaper_signaler) { LIBZMQ_DELETE(reaper_signaler); } stop_monitor (); zmq_assert (destroyed); }
zmq::socket_base_t::~socket_base_t () { if (mailbox) LIBZMQ_DELETE(mailbox); if (reaper_signaler) LIBZMQ_DELETE(reaper_signaler); scoped_lock_t lock(monitor_sync); stop_monitor (); zmq_assert (destroyed); }
static int gov_start(struct devfreq *df) { int ret = 0; struct device *dev = df->dev.parent; struct hwmon_node *node; struct bw_hwmon *hw; struct devfreq_dev_status stat; node = find_hwmon_node(df); if (!node) { dev_err(dev, "Unable to find HW monitor!\n"); return -ENODEV; } hw = node->hw; stat.private_data = NULL; if (df->profile->get_dev_status) ret = df->profile->get_dev_status(df->dev.parent, &stat); if (ret || !stat.private_data) dev_warn(dev, "Device doesn't take AB votes!\n"); else node->dev_ab = stat.private_data; hw->df = df; node->orig_data = df->data; df->data = node; if (start_monitor(df, true)) goto err_start; ret = sysfs_create_group(&df->dev.kobj, node->attr_grp); if (ret) goto err_sysfs; return 0; err_sysfs: stop_monitor(df, true); err_start: df->data = node->orig_data; node->orig_data = NULL; hw->df = NULL; node->dev_ab = NULL; return ret; }
void gb_color_picker_document_monitor_set_buffer (GbColorPickerDocumentMonitor *self, IdeBuffer *buffer) { g_return_if_fail (GB_IS_COLOR_PICKER_DOCUMENT_MONITOR (self)); g_return_if_fail (!buffer || IDE_IS_BUFFER (buffer)); if (self->buffer != buffer && self->buffer != NULL) stop_monitor (self); if (g_set_weak_pointer (&self->buffer, buffer)) { g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_BUFFER]); if (buffer != NULL) start_monitor (self); } }
static void gov_stop(struct devfreq *df) { struct hwmon_node *node = df->data; struct bw_hwmon *hw = node->hw; sysfs_remove_group(&df->dev.kobj, node->attr_grp); stop_monitor(df, true); df->data = node->orig_data; node->orig_data = NULL; hw->df = NULL; /* * Not all governors know about this additional extended device * configuration. To avoid leaving the extended configuration at a * stale state, set it to 0 and let the next governor take it from * there. */ if (node->dev_ab) *node->dev_ab = 0; node->dev_ab = NULL; }
static int ss7_unload_module(void) { cli_unregister(); #ifdef SCCP sccp_cleanup(); #endif isup_cleanup(); cleanup_dump(0, 1, 1); if(monitor_running) { stop_monitor(); } stop_mtp_thread(); mtp_cleanup(); timers_cleanup(); destroy_config(); ast_verbose(VERBOSE_PREFIX_3 "SS7 channel unloaded.\n"); return AST_MODULE_LOAD_SUCCESS; }
zmq::socket_base_t::~socket_base_t () { stop_monitor (); zmq_assert (destroyed); }
// used for various testing static int rctest_main(int argc, char *argv[]) { int on; if (argc < 2) { _dprintf("test what?\n"); } else if (strcmp(argv[1], "rc_service")==0) { notify_rc(argv[2]); } else if(strcmp(argv[1], "get_phy_status")==0) { int mask; mask = atoi(argv[2]); TRACE_PT("debug for phy_status %x\n", get_phy_status(mask)); } else if(strcmp(argv[1], "get_phy_speed")==0) { int mask; mask = atoi(argv[2]); TRACE_PT("debug for phy_speed %x\n", get_phy_speed(mask)); } else if(strcmp(argv[1], "set_phy_ctrl")==0) { int mask, ctrl; mask = atoi(argv[2]); ctrl = atoi(argv[3]); TRACE_PT("debug for phy_speed %x\n", set_phy_ctrl(mask, ctrl)); } else if(strcmp(argv[1], "handle_notifications")==0) { handle_notifications(); } else if(strcmp(argv[1], "check_action")==0) { _dprintf("check: %d\n", check_action()); } else if(strcmp(argv[1], "nvramhex")==0) { int i; char *nv; nv = nvram_safe_get(argv[2]); _dprintf("nvram %s(%d): ", nv, strlen(nv)); for(i=0;i<strlen(nv);i++) { _dprintf(" %x", (unsigned char)*(nv+i)); } _dprintf("\n"); } else { on = atoi(argv[2]); _dprintf("%s %d\n", argv[1], on); if (strcmp(argv[1], "vlan") == 0) { if(on) start_vlan(); else stop_vlan(); } else if (strcmp(argv[1], "lan") == 0) { if(on) start_lan(); else stop_lan(); } else if (strcmp(argv[1], "wl") == 0) { if(on) { start_wl(); lanaccess_wl(); } } else if (strcmp(argv[1], "wan") == 0) { if(on) start_wan(); else stop_wan(); } else if (strcmp(argv[1], "wan_port") == 0) { if(on) start_wan_port(); else stop_wan_port(); } else if (strcmp(argv[1], "firewall") == 0) { //if(on) start_firewall(); //else stop_firewall(); } else if (strcmp(argv[1], "watchdog") == 0) { if(on) start_watchdog(); else stop_watchdog(); } #ifdef RTCONFIG_FANCTRL else if (strcmp(argv[1], "phy_tempsense") == 0) { if(on) start_phy_tempsense(); else stop_phy_tempsense(); } #endif #ifdef RTCONFIG_BCMWL6 #ifdef RTCONFIG_PROXYSTA else if (strcmp(argv[1], "psta_monitor") == 0) { if(on) start_psta_monitor(); else stop_psta_monitor(); } #endif #endif #ifdef RTCONFIG_IPERF else if (strcmp(argv[1], "monitor") == 0) { if(on) start_monitor(); else stop_monitor(); } #endif else if (strcmp(argv[1], "qos") == 0) {//qos test if(on){ #ifdef RTCONFIG_RALINK if (module_loaded("hw_nat")) { modprobe_r("hw_nat"); sleep(1); #if 0 system("echo 0 > /proc/sys/net/ipv4/conf/default/force_igmp_version"); system("echo 0 > /proc/sys/net/ipv4/conf/all/force_igmp_version"); #endif } #endif #ifdef RTCONFIG_TMOBILE_QOS add_EbtablesRules(); #else add_iQosRules(get_wan_ifname(0)); #endif #ifdef RTCONFIG_BWDPI if(nvram_get_int("qos_type") == 1) start_dpi_engine_service(); else #endif start_iQos(); } else { #ifdef RTCONFIG_RALINK if (nvram_get_int("hwnat") && /* TODO: consider RTCONFIG_DUALWAN case */ // !nvram_match("wan0_proto", "l2tp") && // !nvram_match("wan0_proto", "pptp") && // !(nvram_get_int("fw_pt_l2tp") || nvram_get_int("fw_pt_ipsec") && // (nvram_match("wl0_radio", "0") || nvram_get_int("wl0_mrate_x")) && // (nvram_match("wl1_radio", "0") || nvram_get_int("wl1_mrate_x")) && !module_loaded("hw_nat")) { #if 0 system("echo 2 > /proc/sys/net/ipv4/conf/default/force_igmp_version"); system("echo 2 > /proc/sys/net/ipv4/conf/all/force_igmp_version"); #endif #if defined(RTN14U) || defined(RTAC52U) || defined(RTAC51U) || defined(RTN11P) || defined(RTN54U) if (!(!nvram_match("switch_wantag", "none")&&!nvram_match("switch_wantag", ""))) #endif { modprobe("hw_nat"); sleep(1); } } #endif #ifdef RTCONFIG_BWDPI if(nvram_get_int("qos_type") == 1){ stop_dpi_engine_service(); } else #endif stop_iQos(); del_iQosRules(); } } #ifdef RTCONFIG_WEBDAV else if (strcmp(argv[1], "webdav") == 0) { if(on) start_webdav(); } #endif else if (strcmp(argv[1], "gpiow") == 0) { if(argc>=4) set_gpio(atoi(argv[2]), atoi(argv[3])); } else if (strcmp(argv[1], "gpior") == 0) { _dprintf("%d\n", get_gpio(atoi(argv[2]))); } else if (strcmp(argv[1], "gpiod") == 0) { if(argc>=4) gpio_dir(atoi(argv[2]), atoi(argv[3])); } else if (strcmp(argv[1], "init_switch") == 0) { init_switch(on); } else if (strcmp(argv[1], "set_action") == 0) { set_action(on); } else if (strcmp(argv[1], "pwr_usb") == 0) { set_pwr_usb(atoi(argv[2])); _dprintf("done.\n"); } #ifdef RTCONFIG_BCMFA else if (strcmp(argv[1], "fa_rev") == 0) { _dprintf("(%d) done.\n", get_fa_rev()); } else if (strcmp(argv[1], "fa_dump") == 0) { _dprintf("(%d) done.\n", get_fa_dump()); } #endif else { printf("what?\n"); } } return 0; }
// used for various testing static int rctest_main(int argc, char *argv[]) { int on; if (argc < 2) { _dprintf("test what?\n"); } else if (strcmp(argv[1], "rc_service")==0) { notify_rc(argv[2]); } else if(strcmp(argv[1], "get_phy_status")==0) { int mask; mask = atoi(argv[2]); TRACE_PT("debug for phy_status %x\n", get_phy_status(mask)); } else if(strcmp(argv[1], "get_phy_speed")==0) { int mask; mask = atoi(argv[2]); TRACE_PT("debug for phy_speed %x\n", get_phy_speed(mask)); } else if(strcmp(argv[1], "set_phy_ctrl")==0) { int mask, ctrl; mask = atoi(argv[2]); ctrl = atoi(argv[3]); TRACE_PT("debug for phy_speed %x\n", set_phy_ctrl(mask, ctrl)); } else if(strcmp(argv[1], "handle_notifications")==0) { handle_notifications(); } else if(strcmp(argv[1], "check_action")==0) { _dprintf("check: %d\n", check_action()); } else if(strcmp(argv[1], "nvramhex")==0) { int i; char *nv; nv = nvram_safe_get(argv[2]); _dprintf("nvram %s(%d): ", nv, strlen(nv)); for(i=0;i<strlen(nv);i++) { _dprintf(" %x", (unsigned char)*(nv+i)); } _dprintf("\n"); } else { on = atoi(argv[2]); _dprintf("%s %d\n", argv[1], on); if (strcmp(argv[1], "vlan") == 0) { if(on) start_vlan(); else stop_vlan(); } else if (strcmp(argv[1], "lan") == 0) { if(on) start_lan(); else stop_lan(); } else if (strcmp(argv[1], "wl") == 0) { if(on) { start_wl(); lanaccess_wl(); } } else if (strcmp(argv[1], "wan") == 0) { if(on) start_wan(); else stop_wan(); } else if (strcmp(argv[1], "wan_port") == 0) { if(on) start_wan_port(); else stop_wan_port(); } else if (strcmp(argv[1], "firewall") == 0) { //if(on) start_firewall(); //else stop_firewall(); } else if (strcmp(argv[1], "watchdog") == 0) { if(on) start_watchdog(); else stop_watchdog(); } #if ! (defined(RTCONFIG_QCA) || defined(RTCONFIG_RALINK)) else if (strcmp(argv[1], "watchdog02") == 0) { if(on) start_watchdog02(); else stop_watchdog02(); } #endif /* ! (RTCONFIG_QCA || RTCONFIG_RALINK) */ else if (strcmp(argv[1], "sw_devled") == 0) { if(on) start_sw_devled(); else stop_sw_devled(); } #ifdef RTCONFIG_FANCTRL else if (strcmp(argv[1], "phy_tempsense") == 0) { if(on) start_phy_tempsense(); else stop_phy_tempsense(); } #endif #ifdef RTCONFIG_BCMWL6 #ifdef RTCONFIG_PROXYSTA else if (strcmp(argv[1], "psta_monitor") == 0) { if(on) start_psta_monitor(); else stop_psta_monitor(); } #endif #endif #ifdef RTCONFIG_IPERF else if (strcmp(argv[1], "monitor") == 0) { if(on) start_monitor(); else stop_monitor(); } #endif else if (strcmp(argv[1], "qos") == 0) {//qos test if(on){ #ifdef RTCONFIG_RALINK if (module_loaded("hw_nat")) { modprobe_r("hw_nat"); sleep(1); #if 0 f_write_string("/proc/sys/net/ipv4/conf/default/force_igmp_version", "0", 0, 0); f_write_string("/proc/sys/net/ipv4/conf/all/force_igmp_version", "0", 0, 0); #endif } #endif add_iQosRules(get_wan_ifname(wan_primary_ifunit())); #ifdef RTCONFIG_BWDPI if(nvram_get_int("qos_type") == 1) { start_dpi_engine_service(); // force to rebuild firewall to avoid some loopback issue if (nvram_match("fw_nat_loopback", "2")) start_firewall(wan_primary_ifunit(), 0); } else #endif start_iQos(); } else { #ifdef RTCONFIG_RALINK if (nvram_get_int("hwnat") && /* TODO: consider RTCONFIG_DUALWAN case */ // !nvram_match("wan0_proto", "l2tp") && // !nvram_match("wan0_proto", "pptp") && // !(nvram_get_int("fw_pt_l2tp") || nvram_get_int("fw_pt_ipsec") && // (nvram_match("wl0_radio", "0") || nvram_get_int("wl0_mrate_x")) && // (nvram_match("wl1_radio", "0") || nvram_get_int("wl1_mrate_x")) && !module_loaded("hw_nat")) { #if 0 f_write_string("/proc/sys/net/ipv4/conf/default/force_igmp_version", "2", 0, 0); f_write_string("/proc/sys/net/ipv4/conf/all/force_igmp_version", "2", 0, 0); #endif #if defined(RTN14U) || defined(RTAC52U) || defined(RTAC51U) || defined(RTN11P) || defined(RTN300) || defined(RTN54U) || defined(RTAC1200HP) || defined(RTN56UB1) || defined(RTAC54U) || defined(RTN56UB2) if (!(!nvram_match("switch_wantag", "none")&&!nvram_match("switch_wantag", ""))) #endif { modprobe("hw_nat"); sleep(1); } } #endif #ifdef RTCONFIG_BWDPI if(nvram_get_int("qos_type") == 1){ stop_dpi_engine_service(1); } else #endif stop_iQos(); del_iQosRules(); } } #ifdef RTCONFIG_WEBDAV else if (strcmp(argv[1], "webdav") == 0) { if(on) start_webdav(); } #endif #ifdef RTCONFIG_TUNNEL else if (strcmp(argv[1], "mastiff") == 0) { if(on) start_mastiff(); } #endif else if (strcmp(argv[1], "gpiow") == 0) { if(argc>=4) set_gpio(atoi(argv[2]), atoi(argv[3])); } else if (strcmp(argv[1], "gpior") == 0) { printf("%d\n", get_gpio(atoi(argv[2]))); } else if (strcmp(argv[1], "gpiod") == 0) { if(argc>=4) gpio_dir(atoi(argv[2]), atoi(argv[3])); } else if (strcmp(argv[1], "init_switch") == 0) { init_switch(); } else if (strcmp(argv[1], "set_action") == 0) { set_action(on); } else if (strcmp(argv[1], "pwr_usb") == 0) { set_pwr_usb(atoi(argv[2])); _dprintf("done.\n"); } else if (strcmp(argv[1], "enc_chk") == 0) { unsigned char enc_buf[ENC_WORDS_LEN]; unsigned char dec_buf[DATA_WORDS_LEN + 1]; _dprintf("get enc str:[%s]\n", enc_str(argv[2], (char *) enc_buf)); _dprintf("get dec str:[%s]\n", dec_str((char *) enc_buf, (char *) dec_buf)); _dprintf("done(%d)\n", strcmp(argv[2], (const char *) dec_buf)); } #ifdef RTCONFIG_BCMFA else if (strcmp(argv[1], "fa_rev") == 0) { _dprintf("(%d) done.\n", get_fa_rev()); } else if (strcmp(argv[1], "fa_dump") == 0) { _dprintf("(%d) done.\n", get_fa_dump()); } #endif else { printf("what?\n"); } } return 0; }
/* * static void * setup(int argc, char **argv) * Setup monitor environment. */ static void setup(int argc, char **argv) { pfc_cmdopt_t *parser; pfc_refptr_t *defconf, *dname, *defmconf, *defpfile; const char *conffile; const char *moncf; const char *pidpath; monitor_ctx_t *mp = &monitor_ctx; pfc_log_level_t lvl = PFC_LOGLVL_NONE; int argidx, do_kill = 0; uint32_t ktout = KILL_TIMEOUT; char c; /* Use C locale. */ (void)setlocale(LC_ALL, "C"); /* Set timezone. */ tzset(); if (PFC_EXPECT_TRUE(argc > 0)) { /* Initialize program name. */ dname = progname_init(*argv, &progname); if (PFC_EXPECT_FALSE(dname == NULL)) { fatal("Failed to create daemon name."); /* NOTREACHED */ } daemon_name = pfc_refptr_string_value(dname); daemon_rname = dname; } else { dname = NULL; } /* Construct default file paths. */ defconf = pfc_refptr_sprintf(PFC_SYSCONFDIR "/%s.conf", daemon_name); if (PFC_EXPECT_FALSE(defconf == NULL)) { fatal("Failed to create default configuration file path."); /* NOTREACHED */ } defmconf = pfc_refptr_sprintf(PFC_SYSCONFDIR "/%s.conf", progname); if (PFC_EXPECT_FALSE(defmconf == NULL)) { fatal("Failed to create default monitor configuration file " "path."); /* NOTREACHED */ } defpfile = pfc_refptr_sprintf(PFC_RUNDIR_PATH "/%s.pid", progname); if (PFC_EXPECT_FALSE(defpfile == NULL)) { fatal("Failed to create default PID file path."); /* NOTREACHED */ } conffile = pfc_refptr_string_value(defconf); moncf = pfc_refptr_string_value(defmconf); pidpath = pfc_refptr_string_value(defpfile); copt_desc_update(conffile); mcopt_desc_update(moncf); popt_desc_update(pidpath); /* Create command line option parser. */ parser = pfc_cmdopt_init(progname, argc, argv, option_spec, NULL, 0); if (PFC_EXPECT_FALSE(parser == NULL)) { fatal("Failed to create option parser."); /* NOTREACHED */ } mp->mc_syslog = PFC_FALSE; while ((c = pfc_cmdopt_next(parser)) != PFC_CMDOPT_EOF) { switch (c) { case 'C': conffile = pfc_cmdopt_arg_string(parser); if (PFC_EXPECT_FALSE(*conffile == '\0')) { fatal("Configuration file path is empty."); /* NOTREACHED */ } break; case 'c': moncf = pfc_cmdopt_arg_string(parser); if (PFC_EXPECT_FALSE(*moncf == '\0')) { fatal("Monitor configuration file path is " "empty."); /* NOTREACHED */ } break; case 'P': pidpath = pfc_cmdopt_arg_string(parser); if (PFC_EXPECT_FALSE(*pidpath == '\0')) { fatal("Monitor PID file path is empty."); /* NOTREACHED */ } break; case 's': mp->mc_syslog = PFC_TRUE; break; case 'd': /* Run as debug mode. */ monitor_debug++; lvl = (lvl == PFC_LOGLVL_NONE) ? PFC_LOGLVL_DEBUG : PFC_LOGLVL_VERBOSE; break; case 'K': ktout = pfc_cmdopt_arg_uint32(parser); if (PFC_EXPECT_FALSE(ktout < KILL_TIMEOUT_MIN)) { fatal("kill-timeout must be greater than or " "equal %u.", KILL_TIMEOUT_MIN); /* NOTREACHED */ } else if (PFC_EXPECT_FALSE(ktout > KILL_TIMEOUT_MAX)) { fatal("kill-timeout must be less than or " "equal %u.", KILL_TIMEOUT_MAX); /* NOTREACHED */ } /* FALLTHROUGH */ case 'k': do_kill = 1; break; case '\v': dump_version(); /* NOTREACHED */ case PFC_CMDOPT_USAGE: pfc_cmdopt_usage(parser, stdout); exit(MON_EX_OK); /* NOTREACHED */ case PFC_CMDOPT_HELP: pfc_cmdopt_help_list(parser, stdout, HELP_MESSAGE_1, daemon_name, HELP_MESSAGE_2, daemon_name, HELP_MESSAGE_3, NULL); exit(MON_EX_OK); /* NOTREACHED */ case PFC_CMDOPT_ERROR: exit(MON_EX_FATAL); /* NOTREACHED */ default: fatal("Failed to parse command line options."); /* NOTREACHED */ } } if ((argidx = pfc_cmdopt_validate(parser)) == -1) { fatal("Invalid command line options."); /* NOTREACHED */ } argc -= argidx; argv += argidx; if (PFC_EXPECT_FALSE(argc != 0)) { pfc_cmdopt_usage(parser, stderr); exit(MON_EX_FATAL); /* NOTREACHED */ } pfc_cmdopt_destroy(parser); /* Close all inherited file descriptors. */ pfc_closefrom(3); /* * Initialize the logging system to dump early logs to the standard * error output. */ pfc_log_init(progname, stderr, lvl, fatal_die); if (do_kill) { /* Kill the monitor process. */ stop_monitor(pidpath, ktout); exit(MON_EX_OK); /* NOTREACHED */ } mp->mc_conf = PFC_CONF_INVALID; mp->mc_cfpath = pfc_refptr_string_create(moncf); pfc_refptr_put(defmconf); if (PFC_EXPECT_FALSE(mp->mc_cfpath == NULL)) { fatal("Failed to create monitor configuration file path."); /* NOTREACHED */ } mp->mc_mon_pidfile = pfc_refptr_string_create(pidpath); pfc_refptr_put(defpfile); if (PFC_EXPECT_FALSE(mp->mc_mon_pidfile == NULL)) { fatal("Failed to create PID file path."); /* NOTREACHED */ } /* Load system configuration file. */ sysconf_init(mp, conffile); pfc_refptr_put(defconf); /* Initialize syslog if non-debug mode. */ if (monitor_debug) { mp->mc_syslog = PFC_FALSE; } else if (mp->mc_syslog) { syslog_init(); } }