[haiku-commits] r33722 - in haiku/trunk: headers/private/kernel src/system/kernel

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 22 Oct 2009 13:42:51 +0200 (CEST)

Author: axeld
Date: 2009-10-22 13:42:51 +0200 (Thu, 22 Oct 2009)
New Revision: 33722
Changeset: http://dev.haiku-os.org/changeset/33722/haiku

Modified:
   haiku/trunk/headers/private/kernel/thread_types.h
   haiku/trunk/src/system/kernel/thread.cpp
Log:
* Just use the heap instead of cbuf for send_data().


Modified: haiku/trunk/headers/private/kernel/thread_types.h
===================================================================
--- haiku/trunk/headers/private/kernel/thread_types.h   2009-10-22 08:57:34 UTC 
(rev 33721)
+++ haiku/trunk/headers/private/kernel/thread_types.h   2009-10-22 11:42:51 UTC 
(rev 33722)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2008, Haiku Inc.
+ * Copyright 2004-2009, Haiku Inc.
  * Distributed under the terms of the MIT License.
  *
  * Thread definition and structures
@@ -7,9 +7,9 @@
 #ifndef _KERNEL_THREAD_TYPES_H
 #define _KERNEL_THREAD_TYPES_H
 
+
 #ifndef _ASSEMBLER
 
-#include <cbuf.h>
 #include <smp.h>
 #include <signal.h>
 #include <thread_defs.h>
@@ -274,7 +274,7 @@
                thread_id       sender;
                int32           code;
                size_t          size;
-               cbuf            *buffer;
+               void*           buffer;
        } msg;
 
        union {

Modified: haiku/trunk/src/system/kernel/thread.cpp
===================================================================
--- haiku/trunk/src/system/kernel/thread.cpp    2009-10-22 08:57:34 UTC (rev 
33721)
+++ haiku/trunk/src/system/kernel/thread.cpp    2009-10-22 11:42:51 UTC (rev 
33722)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2008, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx
+ * Copyright 2002-2009, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx
  * Distributed under the terms of the MIT License.
  *
  * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
@@ -698,7 +698,6 @@
        sem_id cachedSem;
        cpu_status state;
        status_t status;
-       cbuf *data;
 
        state = disable_interrupts();
        GRAB_THREAD_LOCK();
@@ -725,14 +724,14 @@
                return B_BAD_THREAD_ID;
        }
 
+       void* data;
        if (bufferSize > 0) {
-               data = cbuf_get_chain(bufferSize);
+               data = malloc(bufferSize);
                if (data == NULL)
                        return B_NO_MEMORY;
-               status = cbuf_user_memcpy_to_chain(data, 0, buffer, bufferSize);
-               if (status < B_OK) {
-                       cbuf_free_chain(data);
-                       return B_NO_MEMORY;
+               if (user_memcpy(data, buffer, bufferSize) != B_OK) {
+                       free(data);
+                       return B_BAD_DATA;
                }
        } else
                data = NULL;
@@ -745,7 +744,7 @@
        if (target == NULL) {
                RELEASE_THREAD_LOCK();
                restore_interrupts(state);
-               cbuf_free_chain(data);
+               free(data);
                return B_BAD_THREAD_ID;
        }
 
@@ -784,10 +783,9 @@
 
        if (buffer != NULL && bufferSize != 0 && thread->msg.buffer != NULL) {
                size = min_c(bufferSize, thread->msg.size);
-               status = cbuf_user_memcpy_from_chain(buffer, thread->msg.buffer,
-                       0, size);
-               if (status < B_OK) {
-                       cbuf_free_chain(thread->msg.buffer);
+               status = user_memcpy(buffer, thread->msg.buffer, size);
+               if (status != B_OK) {
+                       free(thread->msg.buffer);
                        release_sem(thread->msg.write_sem);
                        return status;
                }
@@ -796,7 +794,7 @@
        *_sender = thread->msg.sender;
        code = thread->msg.code;
 
-       cbuf_free_chain(thread->msg.buffer);
+       free(thread->msg.buffer);
        release_sem(thread->msg.write_sem);
 
        return code;


Other related posts:

  • » [haiku-commits] r33722 - in haiku/trunk: headers/private/kernel src/system/kernel - axeld