VirtualBox

Changeset 39136 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Oct 28, 2011 10:13:34 AM (13 years ago)
Author:
vboxsync
Message:

More MMIO refactoring and some other cleanups.

Location:
trunk/include/VBox/vmm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmdev.h

    r39135 r39136  
    126126 * @remarks Not used.
    127127 */
    128 typedef DECLCALLBACK(int) FNPDMDEVIOCTL(PPDMDEVINS pDevIns, RTUINT uFunction,
    129                                         void *pvIn, RTUINT cbIn,
    130                                         void *pvOut, RTUINT cbOut, PRTUINT pcbOut);
     128typedef DECLCALLBACK(int) FNPDMDEVIOCTL(PPDMDEVINS pDevIns, uint32_t uFunction,
     129                                        void *pvIn, uint32_t cbIn,
     130                                        void *pvOut, uint32_t cbOut, PRTUINT pcbOut);
    131131/** Pointer to a FNPDMDEVIOCTL() function. */
    132132typedef FNPDMDEVIOCTL *PFNPDMDEVIOCTL;
     
    21632163     * @param   pszDesc             Pointer to description string. This must not be freed.
    21642164     */
    2165     DECLR3CALLBACKMEMBER(int, pfnIOPortRegister,(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts, RTHCPTR pvUser,
     2165    DECLR3CALLBACKMEMBER(int, pfnIOPortRegister,(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTHCPTR pvUser,
    21662166                                                 PFNIOMIOPORTOUT pfnOut, PFNIOMIOPORTIN pfnIn,
    21672167                                                 PFNIOMIOPORTOUTSTRING pfnOutStr, PFNIOMIOPORTINSTRING pfnInStr, const char *pszDesc));
     
    21872187     * @param   pszDesc             Pointer to description string. This must not be freed.
    21882188     */
    2189     DECLR3CALLBACKMEMBER(int, pfnIOPortRegisterRC,(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts, RTRCPTR pvUser,
     2189    DECLR3CALLBACKMEMBER(int, pfnIOPortRegisterRC,(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTRCPTR pvUser,
    21902190                                                   const char *pszOut, const char *pszIn,
    21912191                                                   const char *pszOutStr, const char *pszInStr, const char *pszDesc));
     
    22082208     * @param   pszDesc             Pointer to description string. This must not be freed.
    22092209     */
    2210     DECLR3CALLBACKMEMBER(int, pfnIOPortRegisterR0,(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts, RTR0PTR pvUser,
     2210    DECLR3CALLBACKMEMBER(int, pfnIOPortRegisterR0,(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTR0PTR pvUser,
    22112211                                                   const char *pszOut, const char *pszIn,
    22122212                                                   const char *pszOutStr, const char *pszInStr, const char *pszDesc));
     
    22222222     * @param   cPorts              Number of ports to deregister.
    22232223     */
    2224     DECLR3CALLBACKMEMBER(int, pfnIOPortDeregister,(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts));
     2224    DECLR3CALLBACKMEMBER(int, pfnIOPortDeregister,(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts));
    22252225
    22262226    /**
     
    22422242     * @param   pszDesc             Pointer to description string. This must not be freed.
    22432243     */
    2244     DECLR3CALLBACKMEMBER(int, pfnMMIORegister,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTHCPTR pvUser,
     2244    DECLR3CALLBACKMEMBER(int, pfnMMIORegister,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTHCPTR pvUser,
    22452245                                               PFNIOMMMIOWRITE pfnWrite, PFNIOMMMIOREAD pfnRead, PFNIOMMMIOFILL pfnFill,
    22462246                                               uint32_t fFlags, const char *pszDesc));
     
    22622262     * @param   pszFill             Name of the RC function which is gonna handle Fill/memset operations. (optional)
    22632263     */
    2264     DECLR3CALLBACKMEMBER(int, pfnMMIORegisterRC,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTGCPTR pvUser,
     2264    DECLR3CALLBACKMEMBER(int, pfnMMIORegisterRC,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTRCPTR pvUser,
    22652265                                                 const char *pszWrite, const char *pszRead, const char *pszFill));
    22662266
     
    22822282     * @param   pszDesc             Obsolete. NULL is fine.
    22832283     */
    2284     DECLR3CALLBACKMEMBER(int, pfnMMIORegisterR0,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTR0PTR pvUser,
     2284    DECLR3CALLBACKMEMBER(int, pfnMMIORegisterR0,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTR0PTR pvUser,
    22852285                                                 const char *pszWrite, const char *pszRead, const char *pszFill));
    22862286
     
    22952295     * @param   cbRange             The size of the range (in bytes).
    22962296     */
    2297     DECLR3CALLBACKMEMBER(int, pfnMMIODeregister,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange));
     2297    DECLR3CALLBACKMEMBER(int, pfnMMIODeregister,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange));
    22982298
    22992299    /**
     
    24222422     *          manually from the device yet. At present I doubt we need such features...
    24232423     */
    2424     DECLR3CALLBACKMEMBER(int, pfnROMRegister,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange,
     2424    DECLR3CALLBACKMEMBER(int, pfnROMRegister,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange,
    24252425                                              const void *pvBinary, uint32_t cbBinary, uint32_t fFlags, const char *pszDesc));
    24262426
     
    24362436     * @param   enmProt             The new protection type.
    24372437     */
    2438     DECLR3CALLBACKMEMBER(int, pfnROMProtectShadow,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, PGMROMPROT enmProt));
     2438    DECLR3CALLBACKMEMBER(int, pfnROMProtectShadow,(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, PGMROMPROT enmProt));
    24392439
    24402440    /**
     
    29202920     *                              for the live of the device instance.
    29212921     */
    2922     DECLR3CALLBACKMEMBER(int, pfnDriverAttach,(PPDMDEVINS pDevIns, RTUINT iLun, PPDMIBASE pBaseInterface, PPDMIBASE *ppBaseInterface, const char *pszDesc));
     2922    DECLR3CALLBACKMEMBER(int, pfnDriverAttach,(PPDMDEVINS pDevIns, uint32_t iLun, PPDMIBASE pBaseInterface, PPDMIBASE *ppBaseInterface, const char *pszDesc));
    29232923
    29242924    /**
     
    29382938     * @thread  The emulation thread.
    29392939     */
    2940     DECLR3CALLBACKMEMBER(int, pfnQueueCreate,(PPDMDEVINS pDevIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
     2940    DECLR3CALLBACKMEMBER(int, pfnQueueCreate,(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
    29412941                                              PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue));
    29422942
     
    40674067 * @copydoc PDMDEVHLPR3::pfnIOPortRegister
    40684068 */
    4069 DECLINLINE(int) PDMDevHlpIOPortRegister(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts, RTHCPTR pvUser,
     4069DECLINLINE(int) PDMDevHlpIOPortRegister(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTHCPTR pvUser,
    40704070                                        PFNIOMIOPORTOUT pfnOut, PFNIOMIOPORTIN pfnIn,
    40714071                                        PFNIOMIOPORTOUTSTRING pfnOutStr, PFNIOMIOPORTINSTRING pfnInStr, const char *pszDesc)
     
    40774077 * @copydoc PDMDEVHLPR3::pfnIOPortRegisterRC
    40784078 */
    4079 DECLINLINE(int) PDMDevHlpIOPortRegisterRC(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts, RTRCPTR pvUser,
     4079DECLINLINE(int) PDMDevHlpIOPortRegisterRC(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTRCPTR pvUser,
    40804080                                          const char *pszOut, const char *pszIn, const char *pszOutStr,
    40814081                                          const char *pszInStr, const char *pszDesc)
     
    40874087 * @copydoc PDMDEVHLPR3::pfnIOPortRegisterR0
    40884088 */
    4089 DECLINLINE(int) PDMDevHlpIOPortRegisterR0(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts, RTR0PTR pvUser,
     4089DECLINLINE(int) PDMDevHlpIOPortRegisterR0(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTR0PTR pvUser,
    40904090                                          const char *pszOut, const char *pszIn, const char *pszOutStr,
    40914091                                          const char *pszInStr, const char *pszDesc)
     
    40974097 * @copydoc PDMDEVHLPR3::pfnIOPortDeregister
    40984098 */
    4099 DECLINLINE(int) PDMDevHlpIOPortDeregister(PPDMDEVINS pDevIns, RTIOPORT Port, RTUINT cPorts)
     4099DECLINLINE(int) PDMDevHlpIOPortDeregister(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts)
    41004100{
    41014101    return pDevIns->pHlpR3->pfnIOPortDeregister(pDevIns, Port, cPorts);
     
    41034103
    41044104/**
    4105  * @copydoc PDMDEVHLPR3::pfnMMIORegister
    4106  */
    4107 DECLINLINE(int) PDMDevHlpMMIORegister(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTHCPTR pvUser,
     4105 * Register a Memory Mapped I/O (MMIO) region.
     4106 *
     4107 * These callbacks are of course for the ring-3 context (R3). Register HC
     4108 * handlers before raw-mode context (RC) and ring-0 context (R0) handlers! There
     4109 * must be a R3 handler for every RC and R0 handler!
     4110 *
     4111 * @returns VBox status.
     4112 * @param   pDevIns             The device instance to register the MMIO with.
     4113 * @param   GCPhysStart         First physical address in the range.
     4114 * @param   cbRange             The size of the range (in bytes).
     4115 * @param   pvUser              User argument.
     4116 * @param   fFlags              Flags, IOMMMIO_FLAGS_XXX.
     4117 * @param   pfnWrite            Pointer to function which is gonna handle Write operations.
     4118 * @param   pfnRead             Pointer to function which is gonna handle Read operations.
     4119 * @param   pszDesc             Pointer to description string. This must not be freed.
     4120 */
     4121DECLINLINE(int) PDMDevHlpMMIORegister(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTHCPTR pvUser,
    41084122                                      uint32_t fFlags, PFNIOMMMIOWRITE pfnWrite, PFNIOMMMIOREAD pfnRead, const char *pszDesc)
    41094123{
     
    41134127
    41144128/**
     4129 * Register a Memory Mapped I/O (MMIO) region for GC.
     4130 *
     4131 * These callbacks are for the raw-mode context (RC). Register ring-3 context
     4132 * (R3) handlers before guest context handlers! There must be a R3 handler for
     4133 * every RC handler!
     4134 *
     4135 * @returns VBox status.
     4136 * @param   pDevIns             The device instance to register the MMIO with.
     4137 * @param   GCPhysStart         First physical address in the range.
     4138 * @param   cbRange             The size of the range (in bytes).
     4139 * @param   pvUser              User argument.
     4140 * @param   pszWrite            Name of the RC function which is gonna handle Write operations.
     4141 * @param   pszRead             Name of the RC function which is gonna handle Read operations.
     4142 */
     4143DECLINLINE(int) PDMDevHlpMMIORegisterRC(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTRCPTR pvUser,
     4144                                        const char *pszWrite, const char *pszRead)
     4145{
     4146    return pDevIns->pHlpR3->pfnMMIORegisterRC(pDevIns, GCPhysStart, cbRange, pvUser, pszWrite, pszRead, NULL /*pszFill*/);
     4147}
     4148
     4149/**
     4150 * @copydoc PDMDEVHLPR3::pfnMMIORegisterR0
     4151 */
     4152DECLINLINE(int) PDMDevHlpMMIORegisterR0(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTR0PTR pvUser,
     4153                                        const char *pszWrite, const char *pszRead)
     4154{
     4155    return pDevIns->pHlpR3->pfnMMIORegisterR0(pDevIns, GCPhysStart, cbRange, pvUser, pszWrite, pszRead, NULL /*pszFill*/);
     4156}
     4157
     4158/**
    41154159 * @copydoc PDMDEVHLPR3::pfnMMIORegister
    41164160 */
    4117 DECLINLINE(int) PDMDevHlpMMIORegisterEx(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTHCPTR pvUser,
     4161DECLINLINE(int) PDMDevHlpMMIORegisterEx(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTHCPTR pvUser,
    41184162                                        uint32_t fFlags, PFNIOMMMIOWRITE pfnWrite, PFNIOMMMIOREAD pfnRead,
    41194163                                        PFNIOMMMIOFILL pfnFill, const char *pszDesc)
     
    41264170 * @copydoc PDMDEVHLPR3::pfnMMIORegisterRC
    41274171 */
    4128 DECLINLINE(int) PDMDevHlpMMIORegisterRC(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTGCPTR pvUser,
     4172DECLINLINE(int) PDMDevHlpMMIORegisterRCEx(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTGCPTR pvUser,
    41294173                                        const char *pszWrite, const char *pszRead, const char *pszFill)
    41304174{
     
    41354179 * @copydoc PDMDEVHLPR3::pfnMMIORegisterR0
    41364180 */
    4137 DECLINLINE(int) PDMDevHlpMMIORegisterR0(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTR0PTR pvUser,
     4181DECLINLINE(int) PDMDevHlpMMIORegisterR0Ex(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, RTR0PTR pvUser,
    41384182                                        const char *pszWrite, const char *pszRead, const char *pszFill)
    41394183{
     
    41444188 * @copydoc PDMDEVHLPR3::pfnMMIODeregister
    41454189 */
    4146 DECLINLINE(int) PDMDevHlpMMIODeregister(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange)
     4190DECLINLINE(int) PDMDevHlpMMIODeregister(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange)
    41474191{
    41484192    return pDevIns->pHlpR3->pfnMMIODeregister(pDevIns, GCPhysStart, cbRange);
     
    42024246 * @copydoc PDMDEVHLPR3::pfnROMRegister
    42034247 */
    4204 DECLINLINE(int) PDMDevHlpROMRegister(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange,
     4248DECLINLINE(int) PDMDevHlpROMRegister(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange,
    42054249                                     const void *pvBinary, uint32_t cbBinary, uint32_t fFlags, const char *pszDesc)
    42064250{
     
    42114255 * @copydoc PDMDEVHLPR3::pfnROMProtectShadow
    42124256 */
    4213 DECLINLINE(int) PDMDevHlpROMProtectShadow(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, PGMROMPROT enmProt)
     4257DECLINLINE(int) PDMDevHlpROMProtectShadow(PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, uint32_t cbRange, PGMROMPROT enmProt)
    42144258{
    42154259    return pDevIns->pHlpR3->pfnROMProtectShadow(pDevIns, GCPhysStart, cbRange, enmProt);
     
    45654609 * @copydoc PDMDEVHLPR3::pfnDriverAttach
    45664610 */
    4567 DECLINLINE(int) PDMDevHlpDriverAttach(PPDMDEVINS pDevIns, RTUINT iLun, PPDMIBASE pBaseInterface, PPDMIBASE *ppBaseInterface, const char *pszDesc)
     4611DECLINLINE(int) PDMDevHlpDriverAttach(PPDMDEVINS pDevIns, uint32_t iLun, PPDMIBASE pBaseInterface, PPDMIBASE *ppBaseInterface, const char *pszDesc)
    45684612{
    45694613    return pDevIns->pHlpR3->pfnDriverAttach(pDevIns, iLun, pBaseInterface, ppBaseInterface, pszDesc);
     
    45734617 * @copydoc PDMDEVHLPR3::pfnQueueCreate
    45744618 */
    4575 DECLINLINE(int) PDMDevHlpQueueCreate(PPDMDEVINS pDevIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
    4576                                      PFNPDMQUEUEDEV pfnCallback, bool fGCEnabled, const char *pszName, PPDMQUEUE *ppQueue)
    4577 {
    4578     return pDevIns->pHlpR3->pfnQueueCreate(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fGCEnabled, pszName, ppQueue);
     4619DECLINLINE(int) PDMDevHlpQueueCreate(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     4620                                     PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue)
     4621{
     4622    return pDevIns->pHlpR3->pfnQueueCreate(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, ppQueue);
    45794623}
    45804624
  • trunk/include/VBox/vmm/pdmqueue.h

    r35361 r39136  
    44
    55/*
    6  * Copyright (C) 2006-2010 Oracle Corporation
     6 * Copyright (C) 2006-2011 Oracle Corporation
    77 *
    88 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    119119typedef FNPDMQUEUEEXT *PFNPDMQUEUEEXT;
    120120
    121 VMMR3DECL(int)  PDMR3QueueCreateDevice(PVM pVM, PPDMDEVINS pDevIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
    122                                        PFNPDMQUEUEDEV pfnCallback, bool fGCEnabled, const char *pszName, PPDMQUEUE *ppQueue);
    123 VMMR3DECL(int)  PDMR3QueueCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
    124                                        PFNPDMQUEUEDRV pfnCallback, const char *pszName, PPDMQUEUE *ppQueue);
    125 VMMR3DECL(int)  PDMR3QueueCreateInternal(PVM pVM, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
    126                                          PFNPDMQUEUEINT pfnCallback, bool fGCEnabled, const char *pszName, PPDMQUEUE *ppQueue);
    127 VMMR3DECL(int)  PDMR3QueueCreateExternal(PVM pVM, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
    128                                          PFNPDMQUEUEEXT pfnCallback, void *pvUser, const char *pszName, PPDMQUEUE *ppQueue);
    129 VMMR3DECL(int)  PDMR3QueueDestroy(PPDMQUEUE pQueue);
    130 VMMR3DECL(int)  PDMR3QueueDestroyDevice(PVM pVM, PPDMDEVINS pDevIns);
    131 VMMR3DECL(int)  PDMR3QueueDestroyDriver(PVM pVM, PPDMDRVINS pDrvIns);
    132 VMMR3DECL(void) PDMR3QueueFlushAll(PVM pVM);
     121#ifdef VBOX_IN_VMM
     122VMMR3_INT_DECL(int)  PDMR3QueueCreateDevice(PVM pVM, PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     123                                            PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue);
     124VMMR3_INT_DECL(int)  PDMR3QueueCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     125                                            PFNPDMQUEUEDRV pfnCallback, const char *pszName, PPDMQUEUE *ppQueue);
     126VMMR3_INT_DECL(int)  PDMR3QueueCreateInternal(PVM pVM, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     127                                              PFNPDMQUEUEINT pfnCallback, bool fGCEnabled, const char *pszName, PPDMQUEUE *ppQueue);
     128VMMR3_INT_DECL(int)  PDMR3QueueCreateExternal(PVM pVM, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     129                                              PFNPDMQUEUEEXT pfnCallback, void *pvUser, const char *pszName, PPDMQUEUE *ppQueue);
     130VMMR3_INT_DECL(int)  PDMR3QueueDestroy(PPDMQUEUE pQueue);
     131VMMR3_INT_DECL(int)  PDMR3QueueDestroyDevice(PVM pVM, PPDMDEVINS pDevIns);
     132VMMR3_INT_DECL(int)  PDMR3QueueDestroyDriver(PVM pVM, PPDMDRVINS pDrvIns);
     133VMMR3_INT_DECL(void) PDMR3QueueFlushAll(PVM pVM);
     134#endif /* VBOX_IN_VMM */
    133135
    134136VMMDECL(PPDMQUEUEITEMCORE)    PDMQueueAlloc(PPDMQUEUE pQueue);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette