BOOLEAN SynchronizedTMFRoutine( IN PVOID DeviceExtension, IN PVOID Context ) { PADAPTER_EXTENSION adaptExt = (PADAPTER_EXTENSION)DeviceExtension; PSCSI_REQUEST_BLOCK Srb = (PSCSI_REQUEST_BLOCK) Context; PSRB_EXTENSION srbExt = SRB_EXTENSION(Srb); PVOID va; ULONGLONG pa; ENTER_FN(); SET_VA_PA(); if (virtqueue_add_buf(adaptExt->vq[VIRTIO_SCSI_CONTROL_QUEUE], &srbExt->sg[0], srbExt->out, srbExt->in, &srbExt->cmd, va, pa) >= 0){ virtqueue_kick(adaptExt->vq[VIRTIO_SCSI_CONTROL_QUEUE]); return TRUE; } SRB_SET_SRB_STATUS(Srb, SRB_STATUS_BUSY); StorPortBusy(DeviceExtension, adaptExt->queue_depth); EXIT_ERR(); return FALSE; }
BOOLEAN SynchronizedTMFRoutine( IN PVOID DeviceExtension, IN PVOID Context ) { PADAPTER_EXTENSION adaptExt = (PADAPTER_EXTENSION)DeviceExtension; PSCSI_REQUEST_BLOCK Srb = (PSCSI_REQUEST_BLOCK) Context; PSRB_EXTENSION srbExt = (PSRB_EXTENSION)Srb->SrbExtension; PVOID va; ULONGLONG pa; ENTER_FN(); SET_VA_PA(); if (adaptExt->vq[0]->vq_ops->add_buf(adaptExt->vq[0], &srbExt->sg[0], srbExt->out, srbExt->in, &srbExt->cmd, va, pa) >= 0){ adaptExt->vq[0]->vq_ops->kick(adaptExt->vq[0]); return TRUE; } Srb->SrbStatus = SRB_STATUS_BUSY; StorPortBusy(DeviceExtension, adaptExt->queue_depth); EXIT_ERR(); return FALSE; }
// load biterm topic assignments output by training precess // each line is a doc, format:w1-w2:topic_w1-topic_w2 ... // set topic recorder _nwz and _nw_z void Infer::load_model() { ostringstream ss; ss << "dbz.k" << K; string pt = train_dir + ss.str(); cout << "->load dbz from:" << pt << endl; ifstream rf( pt.c_str() ); if (!rf) { EXIT_ERR("file not find:", pt.c_str()); } string line; while(getline(rf, line)) { // read a doc istringstream iss(line); int w1, w2, k1, k2; char c1, c2, c3; while (iss >> w1 >> c1 >> w2 >> c2 >> k1 >> c3 >> k2) { // allocacte _nwz while (_nwz.size() < w2+1) { vector<int> tmp(K); _nwz.push_back(tmp); } assert(k1 < K && k2 < K); _nwz[w1][k1]++; _nw_z[k1]++; _nwz[w2][k2]++; _nw_z[k2]++; } } printf("M=%d\n", _nwz.size()); }
int main(int argc, char** argv) { modulname = argv[0]; char* outFileName = NULL; int c; opterr = 0; bool fOption = false; bool hOption = false; while ((c = getopt (argc, argv, "fho:")) != -1) switch (c) { case 'f': fOption = true; break; case 'h': hOption = true; break; case 'o': outFileName = optarg; break; case '?': EXIT_ERR() default: assert(0); } // check if either find OR hide option is set if (fOption == hOption) { EXIT_ERR() } char* input = getInputLine(); if (input == NULL) { (void)fprintf(stderr, "Failed to reserve space for input"); return 2; } out = stdout; if (outFileName != NULL) { out = fopen(outFileName, "w"); } if (fOption) find(input, out); else hide(input, out); free(input); (void)fclose(out); return 0; }
BOOLEAN SynchronizedKickEventRoutine( IN PVOID DeviceExtension, IN PVOID Context ) { PADAPTER_EXTENSION adaptExt = (PADAPTER_EXTENSION)DeviceExtension; PVirtIOSCSIEventNode eventNode = (PVirtIOSCSIEventNode) Context; PVOID va = NULL; ULONGLONG pa = 0; ENTER_FN(); if (virtqueue_add_buf(adaptExt->vq[VIRTIO_SCSI_EVENTS_QUEUE], &eventNode->sg, 0, 1, eventNode, va, pa) >= 0){ virtqueue_kick(adaptExt->vq[VIRTIO_SCSI_EVENTS_QUEUE]); return TRUE; } EXIT_ERR(); return FALSE; }