Fixed tape I/O which didn't work when Asynch I/O was dynamically disabled by scp command 'set noasync'

This commit is contained in:
Mark Pizzolato 2012-01-14 06:26:59 -08:00
parent d4c83e5f46
commit 01337fe114

View file

@ -146,7 +146,7 @@ struct tape_context *ctx = (struct tape_context *)uptr->tape_ctx; \
if ((!callback) || !ctx->asynch_io) if ((!callback) || !ctx->asynch_io)
#define AIO_CALL(op, _buf, _bc, _fc, _max, _vbc, _gaplen, _bpi, _obj, _callback)\ #define AIO_CALL(op, _buf, _bc, _fc, _max, _vbc, _gaplen, _bpi, _obj, _callback)\
if (1) { \ if (ctx->asynch_io) { \
struct tape_context *ctx = \ struct tape_context *ctx = \
(struct tape_context *)uptr->tape_ctx; \ (struct tape_context *)uptr->tape_ctx; \
\ \
@ -167,7 +167,10 @@ if ((!callback) || !ctx->asynch_io)
ctx->objupdate = _obj; \ ctx->objupdate = _obj; \
ctx->callback = _callback; \ ctx->callback = _callback; \
pthread_cond_signal (&ctx->io_cond); \ pthread_cond_signal (&ctx->io_cond); \
} } \
else \
if (_callback) \
(_callback) (uptr, r);
#define TOP_DONE 0 /* close */ #define TOP_DONE 0 /* close */
#define TOP_RDRF 1 /* sim_tape_rdrecf_a */ #define TOP_RDRF 1 /* sim_tape_rdrecf_a */
#define TOP_RDRR 2 /* sim_tape_rdrecr_a */ #define TOP_RDRR 2 /* sim_tape_rdrecr_a */