| 563 | } |
| 564 | |
| 565 | int |
| 566 | init_memory_tracker(const char *config_var, RecDataT /* type ATS_UNUSED */, RecData data, void * /* cookie ATS_UNUSED */) |
| 567 | { |
| 568 | static Event *tracker_event = nullptr; |
| 569 | Event *preE; |
| 570 | int dump_mem_info_frequency = 0; |
| 571 | |
| 572 | // set tracker_event to NULL, and return previous value |
| 573 | preE = ink_atomic_swap(&tracker_event, static_cast<Event *>(nullptr)); |
| 574 | |
| 575 | if (config_var) { |
| 576 | dump_mem_info_frequency = data.rec_int; |
| 577 | } else { |
| 578 | dump_mem_info_frequency = REC_ConfigReadInteger("proxy.config.dump_mem_info_frequency"); |
| 579 | } |
| 580 | |
| 581 | Dbg(dbg_ctl_tracker, "init_memory_tracker called [%d]", dump_mem_info_frequency); |
| 582 | |
| 583 | if (preE) { |
| 584 | eventProcessor.schedule_imm(preE->continuation, ET_CALL); |
| 585 | preE->cancel(); |
| 586 | } |
| 587 | |
| 588 | if (dump_mem_info_frequency > 0) { |
| 589 | tracker_event = eventProcessor.schedule_every(new TrackerContinuation, HRTIME_SECONDS(dump_mem_info_frequency), ET_CALL); |
| 590 | } |
| 591 | |
| 592 | return 1; |
| 593 | } |
| 594 | |
| 595 | void |
| 596 | proxy_signal_handler(int signo, siginfo_t *info, void *ctx) |
no test coverage detected