OLD | NEW |
1 /* | 1 /* |
2 ** 2005 December 14 | 2 ** 2005 December 14 |
3 ** | 3 ** |
4 ** The author disclaims copyright to this source code. In place of | 4 ** The author disclaims copyright to this source code. In place of |
5 ** a legal notice, here is a blessing: | 5 ** a legal notice, here is a blessing: |
6 ** | 6 ** |
7 ** May you do good and not evil. | 7 ** May you do good and not evil. |
8 ** May you find forgiveness for yourself and forgive others. | 8 ** May you find forgiveness for yourself and forgive others. |
9 ** May you share freely, never taking more than you give. | 9 ** May you share freely, never taking more than you give. |
10 ** | 10 ** |
(...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1629 ** Process events on the write-queue. | 1629 ** Process events on the write-queue. |
1630 */ | 1630 */ |
1631 void sqlite3async_run(void){ | 1631 void sqlite3async_run(void){ |
1632 asyncWriterThread(); | 1632 asyncWriterThread(); |
1633 } | 1633 } |
1634 | 1634 |
1635 /* | 1635 /* |
1636 ** Control/configure the asynchronous IO system. | 1636 ** Control/configure the asynchronous IO system. |
1637 */ | 1637 */ |
1638 int sqlite3async_control(int op, ...){ | 1638 int sqlite3async_control(int op, ...){ |
| 1639 int rc = SQLITE_OK; |
1639 va_list ap; | 1640 va_list ap; |
1640 va_start(ap, op); | 1641 va_start(ap, op); |
1641 switch( op ){ | 1642 switch( op ){ |
1642 case SQLITEASYNC_HALT: { | 1643 case SQLITEASYNC_HALT: { |
1643 int eWhen = va_arg(ap, int); | 1644 int eWhen = va_arg(ap, int); |
1644 if( eWhen!=SQLITEASYNC_HALT_NEVER | 1645 if( eWhen!=SQLITEASYNC_HALT_NEVER |
1645 && eWhen!=SQLITEASYNC_HALT_NOW | 1646 && eWhen!=SQLITEASYNC_HALT_NOW |
1646 && eWhen!=SQLITEASYNC_HALT_IDLE | 1647 && eWhen!=SQLITEASYNC_HALT_IDLE |
1647 ){ | 1648 ){ |
1648 return SQLITE_MISUSE; | 1649 rc = SQLITE_MISUSE; |
| 1650 break; |
1649 } | 1651 } |
1650 async.eHalt = eWhen; | 1652 async.eHalt = eWhen; |
1651 async_mutex_enter(ASYNC_MUTEX_QUEUE); | 1653 async_mutex_enter(ASYNC_MUTEX_QUEUE); |
1652 async_cond_signal(ASYNC_COND_QUEUE); | 1654 async_cond_signal(ASYNC_COND_QUEUE); |
1653 async_mutex_leave(ASYNC_MUTEX_QUEUE); | 1655 async_mutex_leave(ASYNC_MUTEX_QUEUE); |
1654 break; | 1656 break; |
1655 } | 1657 } |
1656 | 1658 |
1657 case SQLITEASYNC_DELAY: { | 1659 case SQLITEASYNC_DELAY: { |
1658 int iDelay = va_arg(ap, int); | 1660 int iDelay = va_arg(ap, int); |
1659 if( iDelay<0 ){ | 1661 if( iDelay<0 ){ |
1660 return SQLITE_MISUSE; | 1662 rc = SQLITE_MISUSE; |
| 1663 break; |
1661 } | 1664 } |
1662 async.ioDelay = iDelay; | 1665 async.ioDelay = iDelay; |
1663 break; | 1666 break; |
1664 } | 1667 } |
1665 | 1668 |
1666 case SQLITEASYNC_LOCKFILES: { | 1669 case SQLITEASYNC_LOCKFILES: { |
1667 int bLock = va_arg(ap, int); | 1670 int bLock = va_arg(ap, int); |
1668 async_mutex_enter(ASYNC_MUTEX_QUEUE); | 1671 async_mutex_enter(ASYNC_MUTEX_QUEUE); |
1669 if( async.nFile || async.pQueueFirst ){ | 1672 if( async.nFile || async.pQueueFirst ){ |
1670 async_mutex_leave(ASYNC_MUTEX_QUEUE); | 1673 async_mutex_leave(ASYNC_MUTEX_QUEUE); |
1671 return SQLITE_MISUSE; | 1674 rc = SQLITE_MISUSE; |
| 1675 break; |
1672 } | 1676 } |
1673 async.bLockFiles = bLock; | 1677 async.bLockFiles = bLock; |
1674 async_mutex_leave(ASYNC_MUTEX_QUEUE); | 1678 async_mutex_leave(ASYNC_MUTEX_QUEUE); |
1675 break; | 1679 break; |
1676 } | 1680 } |
1677 | 1681 |
1678 case SQLITEASYNC_GET_HALT: { | 1682 case SQLITEASYNC_GET_HALT: { |
1679 int *peWhen = va_arg(ap, int *); | 1683 int *peWhen = va_arg(ap, int *); |
1680 *peWhen = async.eHalt; | 1684 *peWhen = async.eHalt; |
1681 break; | 1685 break; |
1682 } | 1686 } |
1683 case SQLITEASYNC_GET_DELAY: { | 1687 case SQLITEASYNC_GET_DELAY: { |
1684 int *piDelay = va_arg(ap, int *); | 1688 int *piDelay = va_arg(ap, int *); |
1685 *piDelay = async.ioDelay; | 1689 *piDelay = async.ioDelay; |
1686 break; | 1690 break; |
1687 } | 1691 } |
1688 case SQLITEASYNC_GET_LOCKFILES: { | 1692 case SQLITEASYNC_GET_LOCKFILES: { |
1689 int *piDelay = va_arg(ap, int *); | 1693 int *piDelay = va_arg(ap, int *); |
1690 *piDelay = async.bLockFiles; | 1694 *piDelay = async.bLockFiles; |
1691 break; | 1695 break; |
1692 } | 1696 } |
1693 | 1697 |
1694 default: | 1698 default: |
1695 return SQLITE_ERROR; | 1699 rc = SQLITE_ERROR; |
| 1700 break; |
1696 } | 1701 } |
1697 return SQLITE_OK; | 1702 va_end(ap); |
| 1703 return rc; |
1698 } | 1704 } |
1699 | 1705 |
1700 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_ASYNCIO) */ | 1706 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_ASYNCIO) */ |
1701 | 1707 |
OLD | NEW |