Activity for Pharos Team

  • Pharos Team Pharos Team modified ticket #156

    Ceiling Semaphore PLP

  • Pharos Team Pharos Team posted a comment on ticket #156

    semaphore added and tests updated.

  • Pharos Team Pharos Team created ticket #156

    Ceiling Semaphore PLP

  • Pharos Team Pharos Team modified ticket #150

    Sporadic thread time tick handler

  • Pharos Team Pharos Team posted a comment on ticket #150

    Corrected: Added call to pharosITimeTickRemoveThread in the body of the sporadic and periodic threads, at the end of each job. For example: void activateEvent(ptrSporadicThread thread) { /* event to receive */ Event event; /* interrupt level */ PharosInterruptLevel interrupt; /* get the running partition */ ptrPharosPartition partition = thread->rtThread.thread.partition; /* loop forever */ for(;;) { /* disable interrupts so we safely update the state of the thread */ pharosCpuDisableInterrupts(&interrupt);...

  • Pharos Team Pharos Team modified ticket #150

    Sporadic thread time tick handler

  • Pharos Team Pharos Team posted a comment on ticket #150

    Added Test248 to test it quickly

  • Pharos Team Pharos Team modified ticket #150

    Sporadic thread time tick handler

  • Pharos Team Pharos Team posted a comment on ticket #150

    Previous solution is not OK since it breaks the ARMv7-M CPUs. This function is called from within a syscall and with thread dispatch disabled, so the call pharosITimeTickRemoveThread to is invoked when the timer did not even start.

  • Pharos Team Pharos Team modified ticket #154

    RISC-V MMU area table not working

  • Pharos Team Pharos Team posted a comment on ticket #154

    Test1093

  • Pharos Team Pharos Team modified ticket #155

    RISC-V PLIC word alignment

  • Pharos Team Pharos Team posted a comment on ticket #155

    Test1093

  • Pharos Team Pharos Team created ticket #155

    RISC-V PLIC word alignment

  • Pharos Team Pharos Team created ticket #154

    RISC-V MMU area table not working

  • Pharos Team Pharos Team modified ticket #153

    channel receive priority = NULL

  • Pharos Team Pharos Team posted a comment on ticket #153

    Added /* check if the priority is valid */ if(priority != NULL) { /* copy the priority */ *priority = bulk->kernelBulk->priority; } to function pharosIChannelBulkCopy. test956 is now passing.

  • Pharos Team Pharos Team created ticket #153

    channel receive priority = NULL

  • Pharos Team Pharos Team modified ticket #152

    Ip call + channel send + filter

  • Pharos Team Pharos Team posted a comment on ticket #152

    Updated all filters to include a "minimum stack". If set with a 0 (default) it will be set automatically (by Pharos) to PHAROS_SHARED_STACK_SIZE_MINIMUM_SIZE. And it must be a multiple of PHAROS_SHARED_STACK_SIZE_MINIMUM_SIZE, otherwise Pharos will round it up. Test955 is now passing

  • Pharos Team Pharos Team posted a comment on ticket #152

    Updated the filter/ipcalls to make the shared stack divided accross nested calls. This way, when an ipcall the thread switches to the top of the shared stack, and when inside the ipcall it makes another ipcall, Pharos removes the permissions to the previous shared stack position and gives permissions to below. Always in multiple of PHAROS_SHARED_STACK_SIZE_MINIMUM_SIZE

  • Pharos Team Pharos Team created ticket #152

    Ip call + channel send + filter

  • Pharos Team Pharos Team posted a comment on ticket #151

    New (better) solution: pharosIExecuteIpCallFunction calls directly the function (call->functionPointer) when in the callee partition has supervisor permissions: /* if the callee partition has supervisor permissions */ if(pharosIPartitionIsSupervisor(call->partition) == TRUE) { IpCallIo f = (IpCallIo) call->functionPointer; /* call the function directly */ result = f(call->partition->data , caller->id , input , output); } else { /* call the function under a different stack and different MMU context...

  • Pharos Team Pharos Team modified ticket #151

    Partition issupervisor in IpCalls

  • Pharos Team Pharos Team posted a comment on ticket #151

    created pharosCpuExecuteIpCallIoSuper and pharosCpuExecuteIpCallOSuper functions that are called with supervisor permissions and just call the functions (without switching to user mode)

  • Pharos Team Pharos Team posted a comment on ticket #151

    Test2260 created

  • Pharos Team Pharos Team created ticket #151

    Partition issupervisor in IpCalls

  • Pharos Team Pharos Team modified ticket #150

    Sporadic thread time tick handler

  • Pharos Team Pharos Team posted a comment on ticket #150

    Implemented and tested in Test3000 void pharosISporadicJobEnd(ptrSporadicThread sporadic) { /* interrupt level */ PharosInterruptLevel interrupt; ClockTick nextReplenishment = sporadic->rtThread.thread.lastReplenishmentInstant + sporadic->rtThread.thread.replenishBudgetInterval; /* remove any deadline handler of the thread */ pharosITimeTickRemoveDeadline(&sporadic->rtThread); /* disable interrupts so we check if the deadline was meet and remove the handler if needed */ pharosCpuDisableInterrupts(&interrupt);...

  • Pharos Team Pharos Team created ticket #150

    Sporadic thread time tick handler

  • Pharos Team Pharos Team posted a comment on ticket #149

    implemented and inspected.

  • Pharos Team Pharos Team modified ticket #149

    GCC optimization -O2 -> -Ofast

  • Pharos Team Pharos Team created ticket #149

    GCC optimization -O2 -> -Ofast

  • Pharos Team Pharos Team posted a comment on ticket #148

    had to add GCC flag "-fno-delete-null-pointer-checks" because GCC11.1.0 places (in arm9) a "UDF" assembly instruction that triggers a fault if a pointer is not initialized.

  • Pharos Team Pharos Team modified ticket #148

    tools update (GCC 11.1.0)

  • Pharos Team Pharos Team posted a comment on ticket #148

    GCC updated to 11.1.0 and binutils to 2.36.1 and GDB to 10.2. The new GCC is actually very good at finding errors in enums so a lot of corrections were made :). GCC optimizations in memcpy/memset/etc required adding a new flag: #define PHAROS_AVOID_OPTIMIZATION __attribute__ ((optimize("-fno-tree-loop-distribute-patterns"))) Placed in functions that are called by memcpy/memset so these functions themselves don't call memcpy/memset

  • Pharos Team Pharos Team created ticket #148

    tools update (GCC 11.1.0)

  • Pharos Team Pharos Team modified ticket #147

    Periodic thread stop executing

  • Pharos Team Pharos Team posted a comment on ticket #147

    implemented and tested 3260

  • Pharos Team Pharos Team created ticket #147

    Periodic thread stop executing

  • Pharos Team Pharos Team posted a comment on ticket #146

    Implemented. Tested in 1957, 1090, 605

  • Pharos Team Pharos Team modified ticket #146

    Channel bulk queue get - return number available

  • Pharos Team Pharos Team created ticket #146

    Channel bulk queue get - return number available

  • Pharos Team Pharos Team modified ticket #145

    Channel bulk mark invalid

  • Pharos Team Pharos Team posted a comment on ticket #145

    channel send function updated. Tested in 3260

  • Pharos Team Pharos Team modified ticket #145

    Channel bulk mark invalid

  • Pharos Team Pharos Team posted a comment on ticket #145

    channel send function updated. Tested in 3260

  • Pharos Team Pharos Team created ticket #145

    Channel bulk mark invalid

  • Pharos Team Pharos Team posted a comment on ticket #144

    Test50

  • Pharos Team Pharos Team modified ticket #144

    sempahore lock/unlock paired

  • Pharos Team Pharos Team created ticket #144

    sempahore lock/unlock paired

  • Pharos Team Pharos Team created ticket #143

    Semaphore improvements

  • Pharos Team Pharos Team created ticket #142

    Current stack

  • Pharos Team Pharos Team posted a comment on discussion Future developments

    Hi all, We are taking so long to moderate the comments that we just allowed everyone to post any comment, without any moderation. If we detect an "evil" post (like child pornography, etc) then we will delete it (or something similar). But by default anyone can now post without moderation. Thank you

  • Pharos Team Pharos Team posted a comment on discussion Future developments

    Hi, Sorry for taking so long to approve your comment, I did not noticed it before :S We can port to x86, we have so many things to do that we just don't have the time now so we currently mark it with a low priority. Thanks for your input

  • Pharos Team Pharos Team modified a comment on discussion Releases

    Hi all, We have side tracked and deviated a bit from the RTN... We spent some time improving the RTC and RTM libraries with CRC, Galois Field arithmetic, Reed-Solomon, matrix, quaternions, etc. But we should now go back to implementing the RTN so we can finish this release ASAP. It has been too long since our last release (May 2020)! Kind regards, Pharos Team

  • Pharos Team Pharos Team posted a comment on discussion Releases

    Sorry, we only now saw your comment (was marked as spam). Thank you for your suggestion, we will consider it in the definition of our future roadmap. Are you able to sponsor, even partially, the implementation of your suggestion? Kind Regards, Pharos Team

  • Pharos Team Pharos Team posted a comment on discussion Releases

    Hi all, We have side tracked and deviated a bit from the RTN... We spent some time improving the RTC and RTM libraries with CRC, Galois Field arithmetic, Reed-Solomon, matrix, quaternions, etc. But we should now go back to implementing the RTN so we can finish this release ASAK. It has been too long since our last release (May 2020)! Kind regards, Pharos Team

  • Pharos Team Pharos Team modified ticket #140

    Simple robust Filesystem

  • Pharos Team Pharos Team created ticket #141

    Performance metrics

  • Pharos Team Pharos Team posted a comment on ticket #140

    features: - "standard" file - can create/delete file, append, overwrite, read - "log" file - circular file with limited size and just overwrites the beginning when the maximum capacity has been reached. Can only write at the end of the file (is there a use case to write in the middle)? - robust - custom error redundancy. Example FEC as EDAC/Reed-Solomon, redudancy (3x, 5x, etc) - list files created - file name limited to 100 chars - no folders - special care to the metadata redundancy. Probably will...

  • Pharos Team Pharos Team modified ticket #140

    Simple robust Filesystem

  • Pharos Team Pharos Team modified ticket #140

    Simple robust Filesystem

  • Pharos Team Pharos Team modified ticket #140

    Simple robust Filesystem

  • Pharos Team Pharos Team created ticket #140

    Simple robust Filesystem

  • Pharos Team Pharos Team posted a comment on discussion Releases

    Hello all, Work is progressing, albeit a little slower than usual. All protocols have been implemented, with the exception of TCP. The TCP protocol is indeed more complex than the remaining protocols (which was already expected). Some tests are still finding errors inside the RTN partition and are being corrected. We hope that work will continue to progress. Kind regards, Pharos Team

  • Pharos Team Pharos Team modified a wiki page

    Home

  • Pharos Team Pharos Team modified a wiki page

    Home

  • Pharos Team Pharos Team modified ticket #68

    Aarch64 invalidate MMU

  • Pharos Team Pharos Team modified ticket #52

    Armv8-A interrupt handler

  • Pharos Team Pharos Team modified ticket #42

    TreeMap remove recursive

  • Pharos Team Pharos Team posted a comment on ticket #42

    Postponed to future release

  • Pharos Team Pharos Team created ticket #138

    channel bulk/lw queue remove

  • Pharos Team Pharos Team modified ticket #137

    ceil semaphore status

  • Pharos Team Pharos Team posted a comment on ticket #137

    implemented, test in 71

  • Pharos Team Pharos Team created ticket #137

    ceil semaphore status

  • Pharos Team Pharos Team modified ticket #136

    Periodic thread isBestEffort

  • Pharos Team Pharos Team posted a comment on ticket #136

    Implemented in threadperiodic.c: /* if is not a best error */ if(periodic->isBestEffort == FALSE) { /* announce error (a full period elapsed and the thread did not even start to execute) */ pharosSThreadErrorAnnounce(thread , PHAROS_THREAD_ERROR_PERIOD_MISS , NULL , NULL); } else { /* awake at the next release instant */ thread->lastReplenishmentInstant = thread->lastReplenishmentInstant + ((currentTime - thread->lastReplenishmentInstant) / thread->replenishBudgetInterval + 1) * thread->lastReplenishmentInstant;...

  • Pharos Team Pharos Team created ticket #136

    Periodic thread isBestEffort

  • Pharos Team Pharos Team modified ticket #134

    Future update isReady TRUE/FALSE to uint64_t

  • Pharos Team Pharos Team posted a comment on ticket #134

    updated test 1100 with error conditions and level check updated test 1110 with error conditions and level check updated test 1130 with error conditions and level check for future queue updated test 1140 with level check for future queue in complex situations updated test 10220 for multi-core test with partial ready and then complete ready

  • Pharos Team Pharos Team modified ticket #135

    rtcLinkedListAppendFirst missing last update on empty list

  • Pharos Team Pharos Team posted a comment on ticket #135

    Implemented and verified in Test2050

  • Pharos Team Pharos Team created ticket #135

    rtcLinkedListAppendFirst missing last update on empty list

  • Pharos Team Pharos Team created ticket #134

    Future update isReady TRUE/FALSE to uint64_t

  • Pharos Team Pharos Team modified ticket #133

    Collection move to RTC

  • Pharos Team Pharos Team posted a comment on ticket #133

    collection moved. functions renamed to start with "rtc". Since this is used by the kernel, all tests will use these functions indirectly.

  • Pharos Team Pharos Team created ticket #133

    Collection move to RTC

  • Pharos Team Pharos Team created ticket #132

    Ipcalls on multicore CPUs

  • Pharos Team Pharos Team modified ticket #131

    Inside protection - channel bulk

  • Pharos Team Pharos Team posted a comment on ticket #131

    Corrected. In systems with MMU, the MMU is checked to see if the memory belongs to a channel bulk. In systems with MPU, each partition has now a tree map with the channel bulks sorted by the starting address. Then it only needs to check if the specified memory address is inside the channel bulk with lower starting address Test685

  • Pharos Team Pharos Team modified ticket #109

    Sporadic thread hw queue and channel add sender

  • Pharos Team Pharos Team posted a comment on ticket #109

    Added the sender argument to hw queue and channel sporadic threads and also to hw queue receive and channel receive functions. Updated several tests, including Test1340, 2090, 1142

  • Pharos Team Pharos Team modified ticket #130

    random syscalls

  • Pharos Team Pharos Team modified ticket #130

    random syscalls

  • Pharos Team Pharos Team posted a comment on ticket #130

    CSRNG (cryptographically secure random generator) and PCG (pseudo-random generator) added. Following system calls added: // generates the random events PharosCsrngGenerateR pharosCsrngGenerate(uint8_t *array , size_t number); // generates entropy to add to the generator. Even if not really random, Pharos already provides some random entropy so this could only benefit the quality of the CSRNG PharosCsrngAddRandomEventR pharosCsrngAddRandomEvent(PharosCsrngSource source , uint8_t *array , uint8_t number);...

  • Pharos Team Pharos Team created ticket #131

    Inside protection - channel bulk

1 >