void sinsp::on_new_entry_from_proc(void* context, int64_t tid, scap_threadinfo* tinfo, scap_fdinfo* fdinfo, scap_t* newhandle) { ASSERT(tinfo != NULL); // // Retrieve machine information if we don't have it yet // if(m_machine_info == NULL) { m_machine_info = scap_get_machine_info(newhandle); if(m_machine_info != NULL) { m_num_cpus = m_machine_info->num_cpus; } else { ASSERT(false); m_num_cpus = 0; } } // // Add the thread or FD // if(fdinfo == NULL) { sinsp_threadinfo newti(this); newti.init(tinfo); m_thread_manager->add_thread(newti, true); } else { sinsp_threadinfo* sinsp_tinfo = find_thread(tid, true); if(sinsp_tinfo == NULL) { sinsp_threadinfo newti(this); newti.init(tinfo); m_thread_manager->add_thread(newti, true); sinsp_tinfo = find_thread(tid, true); if(sinsp_tinfo == NULL) { ASSERT(false); return; } } sinsp_fdinfo_t sinsp_fdinfo; sinsp_tinfo->add_fd_from_scap(fdinfo, &sinsp_fdinfo); } }
void sinsp::import_thread_table() { scap_threadinfo *pi; scap_threadinfo *tpi; sinsp_threadinfo newti(this); scap_threadinfo *table = scap_get_proc_table(m_h); // // Scan the scap table and add the threads to our list // HASH_ITER(hh, table, pi, tpi) { newti.init(pi); m_thread_manager->add_thread(newti, true); }
/// Undo changing several transitions. void UndoBuffer::undoChangeTransitions(Undo* u) { Project* p; p = u->getProject(); bool sel; GTransition *oldt, *newt; QListIterator<GTransition*> oldti(*u->getTList()); QListIterator<GTransition*> newti(*u->getTList2()); for(;oldti.hasNext();) { oldt = oldti.next(); newt = newti.next(); sel = newt->isSelected(); *newt = *oldt; newt->select(sel); delete oldt; } }