سؤال

إذا كنت تعرف أن هناك واحدا، فهل يمكنك أن تعرف ما هو عليه؟ إذا لم يكن من فضلك قل ذلك :) شكرا.

التوقيع : فراغ * malloc (حجم طويل غير موقعة، بنية malloc_type النوع، أعلام int)؛

علي سبيل المثال. أعلام أخرى ...

 M_ZERO  
         Causes the allocated memory to be set to all zeros.

 M_WAITOK
         Indicates that it is OK to wait for resources.  If the request
         cannot be immediately fulfilled, the current process is put to
         sleep to wait for resources to be released by other processes.
         The malloc(), realloc(), and reallocf() functions cannot return
         NULL if M_WAITOK is specified.**

هذا هو جذر الارتباك

تعديل:

يتم التوضيح الخاص ب M_Fast في إجابتي أدناه.

هل كانت مفيدة؟

المحلول 3

m_fast ليس علم أدناه. كان الجواب دائما هناك في السؤال الذي نشرته: P

إنها حجة Malloc_Type نوع، والتي تستخدم لإجراء إحصائيات على تخصيص الذاكرة. لمزيد من المعلومات، يرجى الرجوع إلى الوثائق من FreeBSD أدناه، (حيث، m_foobuf = m_fast)

يتم استخدام وسيطة النوع لإجراء إحصائيات على استخدام الذاكرة، والشيكات المعنية الأساسية. يمكن استخدامه لتحديد مخصصات متعددة. يمكن فحص الإحصاءات من قبل "vmstat -m".

يتم تعريف النوع باستخدام وحدات ماكرو MALOC_TYPE عبر MALOC_DECLARE () و Malloc_Define ().

/* sys/something/foo_extern.h */
MALLOC_DECLARE(M_FOOBUF);

/* sys/something/foo_main.c */
MALLOC_DEFINE(M_FOOBUF,"foobuffers","Buffers to foo data in to the ether");

/* sys/something/foo_subr.c */   
buf = malloc(sizeof *buf, M_FOOBUF, M_NOWAIT);

من أجل استخدام malloc_define ()، يجب أن يتضمن المرء (بدلا من) و

نصائح أخرى

النواة FreeBSD لديها تنفيذها malloc() يحتوي هذا على توقيع مختلف عن المكتبة القياسية:

عند كتابة رمز Kernel (للعديد من الأنظمة، وليس فقط FreeBSD) غالبا ما تكون هناك قيود تمنع رمز النواة من استخدام المكتبة القياسية، لذلك عادة ما تكون مكتبة kernel توفر وظيفة مماثلة مع مجموعة متفاوتة من أوجه التشابه والاختلافات من المعيار.

مثل ذلك أم لا، برمجة نواة خاصة.

ومع ذلك، لا أرى أي دليل على دعم M_FAST العلم في النواة FreeBSD malloc() نمط.

إذا كان أحد موجودا من أي وقت مضى، فربما أشار إلى أنه لا ينبغي أن تؤخذ Mutex، وربما يشير إلى أن المتصل هو متأكد من أن لا شيء ضروري أو مفضل فشل تخصيص في حظر كائن المزامنة - أنا فقط تكهن بما قد يكون، إذا كان من أي وقت مضى.

إذا لم يذكر المستندات علامة m_fast، فهي غير محددة في <stdlib.h> رأس على النظام الأساسي، يمكنك أن تفترض بأمان أنه غير موجود (أو بالأحرى، إذا فعل ذلك، فلن يكون ذلك مناسبة لاستخدامه في كود المستخدم).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top