Ticket #8377: user_memcpy.patch

File user_memcpy.patch, 1.6 KB (added by jerl1, 12 years ago)
  • src/add-ons/kernel/generic/mpu401/mpu401.c

    From ee32b89ea094a447b07a91342d8e787293528254 Mon Sep 17 00:00:00 2001
    From: Jerome Leveque <leveque.jerome@gmail.com>
    Date: Tue, 13 Mar 2012 22:59:23 +0000
    Subject: [PATCH] Ticket #8377: Fix page fault using user_memcpy
    
    ---
     src/add-ons/kernel/generic/mpu401/mpu401.c |   11 ++++++++++-
     1 files changed, 10 insertions(+), 1 deletions(-)
    
    diff --git a/src/add-ons/kernel/generic/mpu401/mpu401.c b/src/add-ons/kernel/generic/mpu401/mpu401.c
    index 7bf72c9..e68c99e 100644
    a b midi_read(void *cookie, off_t pos, void *buffer, size_t *num_bytes)  
    279279
    280280    unsigned char *data;
    281281    unsigned int i;
    282     cpu_status status;
     282    cpu_status status __attribute__((unused));
    283283    status_t bestat;
    284284    mpu401device *mpu_device = (mpu401device *)cookie;
    285285
    midi_read(void *cookie, off_t pos, void *buffer, size_t *num_bytes)  
    298298        *num_bytes = 1;
    299299        return B_INTERRUPTED;
    300300    } else {
     301#ifdef __HAIKU__
     302        if (user_memcpy(data+i, &(mpubuffer[mbuf_start]),
     303            sizeof(unsigned char)) == B_OK) {
     304#else
    301305        status = lock();
    302306        *(data+i) = mpubuffer[mbuf_start];
     307#endif
    303308        i++;
    304309        mbuf_start++; // pointer to data in ringbuffer
    305310        if (mbuf_start >= (MBUF_ELEMENTS-1))
    midi_read(void *cookie, off_t pos, void *buffer, size_t *num_bytes)  
    307312        *num_bytes = 1; // How many bytes are being returned in buffer
    308313        if (mbuf_bytes > 0)
    309314            mbuf_bytes--; // bytes read from buffer, so decrement buffer count
     315#ifdef __HAIKU__
     316        }
     317#else
    310318        unlock(status);
     319#endif
    311320        //PRINT(("bytes in buffer: %d\n",mbuf_bytes));
    312321    }
    313322