Beispiel #1
0
//
// Purpose: i/o tag alloc
//
FS_Io_Type *FS_util_io_tag_alloc(FS_Fd_Type        *pp_fd,
                                 int                pv_io_type,
                                 SB_Tag_Type        pv_tag_user,
                                 SB_Transid_Type    pv_transid,
                                 SB_Transseq_Type   pv_startid,
                                 char              *pp_buffer) {
    FS_Io_Type *lp_io;
    int         lv_tag;

    if (pp_fd->ip_io_tag_mgr->size() <= pp_fd->iv_nowait_depth) {
        lv_tag = pp_fd->ip_io_tag_mgr->alloc();
        lp_io = &pp_fd->ip_io[lv_tag];
        lp_io->ip_fd = pp_fd;
        lp_io->iv_io_type = pv_io_type;
        lp_io->iv_msgid = 0;
        lp_io->iv_tag_user = pv_tag_user;
        TRANSID_COPY(lp_io->iv_transid, pv_transid);
        TRANSSEQ_COPY(lp_io->iv_startid, pv_startid);
        lp_io->ip_buffer = pp_buffer;

        // link in
        lp_io->ip_io_next = NULL;
        lp_io->ip_io_prev = pp_fd->ip_io_new;
        if (pp_fd->ip_io_new == NULL)
            pp_fd->ip_io_old = lp_io;
        else
            pp_fd->ip_io_new->ip_io_next = lp_io;
        pp_fd->ip_io_new = lp_io;

        lp_io->iv_inuse = true;
    } else
        lp_io = NULL;
    return lp_io;
}
void trans_set_curr(MS_Mon_Transid_Type trans) {
    TRANSID_COPY(curr_transid, trans);
}
Beispiel #3
0
void trans_set_curr(MS_Mon_Transid_Type  trans,
                    MS_Mon_Transseq_Type startid) {
    TRANSID_COPY(curr_transid, trans);
    TRANSSEQ_COPY(curr_startid, startid);
}