本文整理汇总了C++中Dmsg4函数的典型用法代码示例。如果您正苦于以下问题:C++ Dmsg4函数的具体用法?C++ Dmsg4怎么用?C++ Dmsg4使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Dmsg4函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sm_free_pool_memory
/* Free a memory buffer */
void sm_free_pool_memory(const char *fname, int lineno, POOLMEM *obuf)
{
struct abufhead *buf;
int pool;
ASSERT(obuf);
P(mutex);
buf = (struct abufhead *)((char *)obuf - HEAD_SIZE);
pool = buf->pool;
pool_ctl[pool].in_use--;
if (pool == 0) {
free((char *)buf); /* free nonpooled memory */
} else { /* otherwise link it to the free pool chain */
/* Disabled because it hangs in #5507 */
#ifdef xDEBUG
struct abufhead *next;
/* Don't let him free the same buffer twice */
for (next=pool_ctl[pool].free_buf; next; next=next->next) {
if (next == buf) {
Dmsg4(dbglvl, "free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
Dmsg4(dbglvl, "bad free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
V(mutex); /* unblock the pool */
ASSERT(next != buf); /* attempt to free twice */
}
}
#endif
buf->next = pool_ctl[pool].free_buf;
pool_ctl[pool].free_buf = buf;
}
Dmsg4(dbglvl, "free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
V(mutex);
}
示例2: update_inchanger_for_export
/*
* Set the inchanger flag to zero for each slot marked in
* the given slot_list.
*
* The vol_list passed here needs to be from an "autochanger listall" cmd.
*/
void update_inchanger_for_export(UAContext *ua, STORERES *store, dlist *vol_list, char *slot_list)
{
vol_list_t *vl;
MEDIA_DBR mr;
if (!open_client_db(ua)) {
return;
}
/*
* Walk through the list updating the media records
*/
foreach_dlist(vl, vol_list) {
/*
* We are only interested in normal slots.
*/
switch (vl->Type) {
case slot_type_normal:
break;
default:
continue;
}
/*
* Only update entries of slots marked in the slot_list.
*/
if (!bit_is_set(vl->Slot - 1, slot_list)) {
continue;
}
/*
* Set InChanger to zero for this Slot
*/
memset(&mr, 0, sizeof(mr));
mr.Slot = vl->Slot;
mr.InChanger = 1;
mr.MediaId = 0; /* Get by VolumeName */
if (vl->VolName) {
bstrncpy(mr.VolumeName, vl->VolName, sizeof(mr.VolumeName));
} else {
mr.VolumeName[0] = 0;
}
set_storageid_in_mr(store, &mr);
Dmsg4(100, "Before make unique: Vol=%s slot=%d inchanger=%d sid=%d\n",
mr.VolumeName, mr.Slot, mr.InChanger, mr.StorageId);
db_lock(ua->db);
/*
* Set InChanger to zero for this Slot
*/
db_make_inchanger_unique(ua->jcr, ua->db, &mr);
db_unlock(ua->db);
Dmsg4(100, "After make unique: Vol=%s slot=%d inchanger=%d sid=%d\n",
mr.VolumeName, mr.Slot, mr.InChanger, mr.StorageId);
}
return;
}
示例3: Dmsg4
void *sm_realloc(const char *fname, int lineno, void *ptr, unsigned int size)
{
unsigned osize;
void *buf;
char *cp = (char *) ptr;
Dmsg4(DT_MEMORY|50, "sm_realloc %s:%d %p %d\n", get_basename(fname), (uint32_t)lineno, ptr, size);
if (size <= 0) {
e_msg(fname, lineno, M_ABORT, 0, _("sm_realloc size: %d\n"), size);
}
/* If the old block pointer is NULL, treat realloc() as a
malloc(). SVID is silent on this, but many C libraries
permit this. */
if (ptr == NULL) {
return sm_malloc(fname, lineno, size);
}
/* If the old and new sizes are the same, be a nice guy and just
return the buffer passed in. */
cp -= HEAD_SIZE;
struct abufhead *head = (struct abufhead *)cp;
osize = head->ablen - (HEAD_SIZE + 1);
if (size == osize) {
return ptr;
}
/* Sizes differ. Allocate a new buffer of the requested size.
If we can't obtain such a buffer, act as defined in SVID:
return NULL from realloc() and leave the buffer in PTR
intact. */
// sm_buffers--;
// sm_bytes -= head->ablen;
if ((buf = smalloc(fname, lineno, size)) != NULL) {
memcpy(buf, ptr, (int)sm_min(size, osize));
/* If the new buffer is larger than the old, fill the balance
of it with "designer garbage". */
if (size > osize) {
memset(((char *) buf) + osize, 0x55, (int) (size - osize));
}
/* All done. Free and dechain the original buffer. */
sm_free(fname, lineno, ptr);
}
Dmsg4(DT_MEMORY|60, _("sm_realloc %d at %p from %s:%d\n"), size, buf, get_basename(fname), (uint32_t)lineno);
return buf;
}
示例4: ASSERT
/*
* TODO: Check fsr with EOF
*/
int vtape::fsr(int count)
{
ASSERT(online);
ASSERT(current_file >= 0);
ASSERT(fd >= 0);
int i,nb, ret=0;
// boffset_t where=0;
uint32_t s;
Dmsg4(dbglevel, "fsr %i:%i EOF=%i c=%i\n",
current_file,current_block,atEOF,count);
check_eof();
if (atEOT) {
errno = EIO;
current_block = -1;
return -1;
}
if (atEOD) {
errno = EIO;
return -1;
}
atBOT = atEOF = false;
/* check all block record */
for(i=0; (i < count) && !atEOF ; i++) {
nb = ::read(fd, &s, sizeof(uint32_t)); /* get size of next block */
if (nb == sizeof(uint32_t) && s) {
current_block++;
lseek(fd, s, SEEK_CUR); /* seek after this block */
} else {
Dmsg4(dbglevel, "read EOF %i:%i nb=%i s=%i\n",
current_file, current_block, nb,s);
errno = EIO;
ret = -1;
if (next_FM) {
current_file++;
read_fm(VT_SKIP_EOF);
}
atEOF = true; /* stop the loop */
}
}
return ret;
}
示例5: ndmp_wait_for_job_termination
static inline int ndmp_wait_for_job_termination(JCR *jcr)
{
jcr->setJobStatus(JS_Running);
/*
* Force cancel in SD if failing, but not for Incomplete jobs
* so that we let the SD despool.
*/
Dmsg4(100, "cancel=%d FDJS=%d JS=%d SDJS=%d\n",
jcr->is_canceled(), jcr->FDJobStatus,
jcr->JobStatus, jcr->SDJobStatus);
if (jcr->is_canceled() || (!jcr->res.job->RescheduleIncompleteJobs)) {
Dmsg3(100, "FDJS=%d JS=%d SDJS=%d\n",
jcr->FDJobStatus, jcr->JobStatus, jcr->SDJobStatus);
cancel_storage_daemon_job(jcr);
}
/*
* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors
*/
wait_for_storage_daemon_termination(jcr);
jcr->FDJobStatus = JS_Terminated;
if (jcr->JobStatus != JS_Terminated) {
return jcr->JobStatus;
}
if (jcr->FDJobStatus != JS_Terminated) {
return jcr->FDJobStatus;
}
return jcr->SDJobStatus;
}
示例6: calculate_and_compare_file_chksum
/*
* Compare a files chksum against a stored chksum.
*
* Returns: true if chksum matches.
* false if chksum is different.
*/
bool calculate_and_compare_file_chksum(JCR *jcr, FF_PKT *ff_pkt,
const char *fname, const char *chksum)
{
DIGEST *digest = NULL;
int digest_stream = STREAM_NONE;
char *digest_buf = NULL;
const char *digest_name;
bool retval = false;
if (calculate_file_chksum(jcr, ff_pkt, &digest, &digest_stream, &digest_buf, &digest_name)) {
if (digest_stream != STREAM_NONE && digest == NULL) {
Jmsg(jcr, M_WARNING, 0, _("%s digest initialization failed\n"), stream_to_ascii(digest_stream));
} else if (digest && digest_buf) {
if (!bstrcmp(digest_buf, chksum)) {
Dmsg4(100, "%s %s chksum diff. Cat: %s File: %s\n", fname, digest_name, chksum, digest_buf);
} else {
retval = true;
}
}
if (digest_buf) {
free(digest_buf);
}
if (digest) {
crypto_digest_free(digest);
}
}
return retval;
}
示例7: do_strip
/*
* Do in place strip of path
*/
static bool do_strip(int count, char *in)
{
char *out = in;
int stripped;
int numsep = 0;
/* Copy to first path separator -- Win32 might have c: ... */
while (*in && !IsPathSeparator(*in)) {
out++; in++;
}
out++; in++;
numsep++; /* one separator seen */
for (stripped=0; stripped<count && *in; stripped++) {
while (*in && !IsPathSeparator(*in)) {
in++; /* skip chars */
}
if (*in) {
numsep++; /* count separators seen */
in++; /* skip separator */
}
}
/* Copy to end */
while (*in) { /* copy to end */
if (IsPathSeparator(*in)) {
numsep++;
}
*out++ = *in++;
}
*out = 0;
Dmsg4(500, "stripped=%d count=%d numsep=%d sep>count=%d\n",
stripped, count, numsep, numsep>count);
return stripped==count && numsep>count;
}
示例8: btimer_start_common
/*
* Start a timer on a BSOCK. kill it after wait seconds.
*
* Returns: btimer_t *(pointer to btimer_t struct) on success
* NULL on failure
*/
btimer_t *start_bsock_timer(BSOCK *bsock, uint32_t wait)
{
btimer_t *wid;
if (wait <= 0) { /* wait should be > 0 */
return NULL;
}
wid = btimer_start_common(wait);
if (wid == NULL) {
return NULL;
}
wid->type = TYPE_BSOCK;
wid->tid = pthread_self();
wid->bsock = bsock;
wid->jcr = bsock->jcr();
wid->wd->callback = callback_thread_timer;
wid->wd->one_shot = true;
wid->wd->interval = wait;
register_watchdog(wid->wd);
Dmsg4(dbglvl, "Start bsock timer %p tid=%p for %d secs at %d\n", wid,
wid->tid, wait, time(NULL));
return wid;
}
示例9: is_cleaning_tape
/*
* Check if this is a cleaning tape by comparing the Volume name
* with the Cleaning Prefix. If they match, this is a cleaning
* tape.
*/
static inline bool is_cleaning_tape(UAContext *ua, MEDIA_DBR *mr, POOL_DBR *pr)
{
bool retval;
/*
* Find Pool resource
*/
ua->jcr->res.pool = (POOLRES *)GetResWithName(R_POOL, pr->Name);
if (!ua->jcr->res.pool) {
ua->error_msg(_("Pool \"%s\" resource not found for volume \"%s\"!\n"),
pr->Name, mr->VolumeName);
return false;
}
retval = bstrncmp(mr->VolumeName,
ua->jcr->res.pool->cleaning_prefix,
strlen(ua->jcr->res.pool->cleaning_prefix));
Dmsg4(100, "CLNprefix=%s: Vol=%s: len=%d bstrncmp=%s\n",
ua->jcr->res.pool->cleaning_prefix, mr->VolumeName,
strlen(ua->jcr->res.pool->cleaning_prefix),
retval ? "true" : "false");
return retval;
}
示例10: Dmsg0
/*
* Note!! Do not enter with dev->Lock() since unreserve_device()
* is going to lock it too.
*/
void DEVICE::detach_dcr_from_dev(DCR *dcr)
{
Dmsg0(500, "Enter detach_dcr_from_dev\n"); /* jcr is NULL in some cases */
Lock();
Lock_dcrs();
/* Detach this dcr only if attached */
if (dcr->attached_to_dev) {
dcr->unreserve_device(true);
Dmsg4(200, "Detach Jid=%d dcr=%p size=%d to dev=%s\n", (uint32_t)dcr->jcr->JobId,
dcr, attached_dcrs->size(), print_name());
dcr->attached_to_dev = false;
if (attached_dcrs->size()) {
attached_dcrs->remove(dcr); /* detach dcr from device */
}
}
/* Check if someone accidentally left a drive reserved, and clear it */
if (attached_dcrs->size() == 0 && num_reserved() > 0) {
Pmsg2(000, "Warning!!! dcrs=0 reserved=%d setting reserved==0. dev=%s\n",
num_reserved(), print_name());
m_num_reserved = 0;
}
dcr->attached_to_dev = false;
Unlock_dcrs();
Unlock();
}
示例11: ini_store_alist_str
static bool ini_store_alist_str(LEX *lc, ConfigFile *inifile, ini_items *item)
{
alist *list;
if (!lc) {
/*
* TODO, write back the alist to edit buffer
*/
return true;
}
if (lex_get_token(lc, T_STRING) == T_ERROR) {
return false;
}
if (item->val.alistval == NULL) {
list = New(alist(10, owned_by_alist));
} else {
list = item->val.alistval;
}
Dmsg4(900, "Append %s to alist %p size=%d %s\n",
lc->str, list, list->size(), item->name);
list->append(bstrdup(lc->str));
item->val.alistval = list;
scan_to_eol(lc);
return true;
}
示例12: clear_all_bits
/*
* Open the device with the operating system and
* initialize buffer pointers.
*
* Returns: true on success
* false on error
*
* Note, for a tape, the VolName is the name we give to the
* volume (not really used here), but for a file, the
* VolName represents the name of the file to be created/opened.
* In the case of a file, the full name is the device name
* (archive_name) with the VolName concatenated.
*/
bool DEVICE::open(DCR *dcr, int omode)
{
char preserve[ST_BYTES];
clear_all_bits(ST_MAX, preserve);
if (is_open()) {
if (open_mode == omode) {
return true;
} else {
d_close(m_fd);
clear_opened();
Dmsg0(100, "Close fd for mode change.\n");
if (bit_is_set(ST_LABEL, state))
set_bit(ST_LABEL, preserve);
if (bit_is_set(ST_APPENDREADY, state))
set_bit(ST_APPENDREADY, preserve);
if (bit_is_set(ST_READREADY, state))
set_bit(ST_READREADY, preserve);
}
}
if (dcr) {
dcr->setVolCatName(dcr->VolumeName);
VolCatInfo = dcr->VolCatInfo; /* structure assign */
}
Dmsg4(100, "open dev: type=%d dev_name=%s vol=%s mode=%s\n", dev_type,
print_name(), getVolCatName(), mode_to_str(omode));
clear_bit(ST_LABEL, state);
clear_bit(ST_APPENDREADY, state);
clear_bit(ST_READREADY, state);
clear_bit(ST_EOT, state);
clear_bit(ST_WEOT, state);
clear_bit(ST_EOF, state);
label_type = B_BAREOS_LABEL;
/*
* We are about to open the device so let any plugin know we are.
*/
if (dcr && generate_plugin_event(dcr->jcr, bsdEventDeviceOpen, dcr) != bRC_OK) {
Dmsg0(100, "open_dev: bsdEventDeviceOpen failed\n");
return false;
}
Dmsg1(100, "call open_device mode=%s\n", mode_to_str(omode));
open_device(dcr, omode);
/*
* Reset any important state info
*/
clone_bits(ST_MAX, preserve, state);
Dmsg2(100, "preserve=0x%x fd=%d\n", preserve, m_fd);
return m_fd >= 0;
}
示例13: while
/*
* Write a Record to the block
*
* Returns: false means the block could not be written to tape/disk.
* true on success (all bytes written to the block).
*/
bool DCR::write_record()
{
bool retval = false;
bool translated_record = false;
char buf1[100], buf2[100];
/*
* Perform record translations.
*/
before_rec = rec;
after_rec = NULL;
if (generate_plugin_event(jcr, bsdEventWriteRecordTranslation, this) != bRC_OK) {
goto bail_out;
}
/*
* The record got translated when we got an after_rec pointer after calling the
* bsdEventWriteRecordTranslation plugin event. If no translation has taken place
* we just point the after_rec pointer to same DEV_RECORD as in the before_rec pointer.
*/
if (!after_rec) {
after_rec = before_rec;
} else {
translated_record = true;
}
while (!write_record_to_block(this, after_rec)) {
Dmsg2(850, "!write_record_to_block data_len=%d rem=%d\n",
after_rec->data_len, after_rec->remainder);
if (!write_block_to_device()) {
Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n",
dev->print_name(), dev->bstrerror());
goto bail_out;
}
}
jcr->JobBytes += after_rec->data_len; /* increment bytes this job */
if (jcr->RemainingQuota && jcr->JobBytes > jcr->RemainingQuota) {
Jmsg0(jcr, M_FATAL, 0, _("Quota Exceeded. Job Terminated.\n"));
goto bail_out;
}
Dmsg4(850, "write_record FI=%s SessId=%d Strm=%s len=%d\n",
FI_to_ascii(buf1, after_rec->FileIndex), after_rec->VolSessionId,
stream_to_ascii(buf2, after_rec->Stream, after_rec->FileIndex), after_rec->data_len);
retval = true;
bail_out:
if (translated_record) {
copy_record_state(before_rec, after_rec);
free_record(after_rec);
after_rec = NULL;
}
return retval;
}
示例14: Dmsg0
void vtape::dump()
{
Dmsg0(dbglevel+1, "===================\n");
Dmsg2(dbglevel, "file:block = %i:%i\n", current_file, current_block);
Dmsg1(dbglevel+1, "last_file=%i\n", last_file);
Dmsg1(dbglevel+1, "file_block=%i\n", file_block);
Dmsg4(dbglevel+1, "EOF=%i EOT=%i EOD=%i BOT=%i\n",
atEOF, atEOT, atEOD, atBOT);
}
示例15: Dmsg4
/*
* Close the device
*/
bool DEVICE::close()
{
bool ok = true;
Dmsg4(40, "close_dev vol=%s fd=%d dev=%p dev=%s\n",
VolHdr.VolumeName, m_fd, this, print_name());
offline_or_rewind();
if (!is_open()) {
Dmsg2(200, "device %s already closed vol=%s\n", print_name(),
VolHdr.VolumeName);
return true; /* already closed */
}
switch (dev_type) {
case B_VTL_DEV:
case B_VTAPE_DEV:
case B_TAPE_DEV:
unlock_door();
/* Fall through wanted */
default:
if (d_close(m_fd) != 0) {
berrno be;
dev_errno = errno;
Mmsg2(errmsg, _("Error closing device %s. ERR=%s.\n"),
print_name(), be.bstrerror());
ok = false;
}
break;
}
unmount(1); /* do unmount if required */
/* Clean up device packet so it can be reused */
clear_opened();
/*
* Be careful not to clear items needed by the DVD driver
* when it is closing a single part.
*/
state &= ~(ST_LABEL|ST_READ|ST_APPEND|ST_EOT|ST_WEOT|ST_EOF|
ST_NOSPACE|ST_MOUNTED|ST_MEDIA|ST_SHORT);
label_type = B_BACULA_LABEL;
file = block_num = 0;
file_size = 0;
file_addr = 0;
EndFile = EndBlock = 0;
openmode = 0;
clear_volhdr();
memset(&VolCatInfo, 0, sizeof(VolCatInfo));
if (tid) {
stop_thread_timer(tid);
tid = 0;
}
return ok;
}