Замена функции памяти кода

В этом примере показано, как задать заменяющее отображение кода для функции памяти. Пример задает отображение для memcpy функционируйте программно. В качестве альтернативы можно использовать Code Replacement Tool, чтобы задать то же отображение.

  1. Создайте табличный файл определения, который содержит функциональное определение. Например:

    function hTable = crl_table_memcpy()
    
  2. В теле функции составьте таблицу путем вызова функционального RTW.TflTable.

    hTable = RTW.TflTable;
    
  3. Создайте запись для отображения функции с вызовом RTW.TflCFunctionEntry функция.

    % Create entry for void* memcpy(void*, void*, size_t)
    fcn_entry = RTW.TflCFunctionEntry;
    
  4. Параметры записи функции множества с вызовом setTflCFunctionEntryParameters функция.

    % Set SideEffects to 'true' for function returning void to prevent it from 
    % being optimized away.
    setTflCFunctionEntryParameters(fcn_entry, ...
                                   'Key',                      'memcpy', ...
                                   'Priority',                 90, ...
                                   'ImplementationName',       'memcpy_int', ...
                                   'ImplementationHeaderFile', 'memcpy_int.h',...
                                   'SideEffects',              true);
    
  5. Создайте концептуальные аргументы y1, u1, u2, и u3. Существует несколько способов настроить концептуальные аргументы. Этот пример использует вызовы getTflArgFromString и addConceptualArg функции, чтобы создать и добавить аргументы.

    arg = getTflArgFromString(hTable, 'y1', 'void*');
    arg.IOType = 'RTW_IO_OUTPUT';
    addConceptualArg(fcn_entry, arg);
    
    arg = getTflArgFromString(hTable, 'u1', 'void*');
    addConceptualArg(fcn_entry, arg);
    
    arg = getTflArgFromString(hTable, 'u2', 'void*');
    addConceptualArg(fcn_entry, arg);
    
    arg = getTflArgFromString(hTable, 'u3', 'size_t');
    addConceptualArg(fcn_entry, arg);
    
  6. Скопируйте концептуальные аргументы в аргументы реализации. Существует несколько способов настроить аргументы реализации. Этот пример использует вызов copyConceptualArgsToImplementation функция, чтобы создать и добавить аргументы реализации в запись путем копирования соответствия с концептуальными аргументами.

    copyConceptualArgsToImplementation(fcn_entry);
    
  7. Добавьте запись в заменяющую таблицу кода с вызовом addEntry функция.

    addEntry(hTable, fcn_entry);
  8. Сохраните табличный файл определения. Используйте имя табличной функции определения, чтобы назвать файл.

Похожие темы