Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-06-2009, 13:14   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
[C] - una definizione

non mi è chiaro cosa definisce questa sotto:

EXTERN struct proc *pproc_addr[NR_TASKS + NR_PROCS];
#define NR_TASKS 4
#define proc_addr(n) (pproc_addr + NR_TASKS)[(n)]

e poi se questa assegna a xp il risultato della chiamata di una funzione oppure, se questo proc_addr(xp->p_sendto) è un assegnamento che non ho mai visto ?

xp = proc_addr(xp->p_sendto);

A me sembra più una chiamata di funzione

grazie

Ultima modifica di misterx : 06-06-2009 alle 18:22.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2009, 13:59   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
No è una semplice () "function-like" macro.
Ovvero una macro con parametro, che sembra una chiamata a funzione ma che in realtà è una trappola per topi

Scherzi a parte, essendo una define, va interpretata così:
Codice:
#define proc_addr(n) (pproc_addr + NR_TASKS)[(n)]
regola:
#define <identifier>(<parameter list>) <replacement token list>
Per cui il tuo codice:
Codice:
xp = proc_addr(xp->p_sendto);
dopo che il preprocessore è passato a farsi il suo giretto, se la mia memoria del C non è del tutto arruginita, viene sostituito così:
Codice:
xp = proc_addr + NR_TASKS[(xp->p_sendto)];

<DISCLAIMER MODE>
Si declina ogni responsabilità per le eventuali fantasticherie espresse in questo post (attendi lumi più precisi).
</DISCLAIMER MODE>
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 03-06-2009 alle 14:02.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2009, 14:03   #3
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4907
Edit: già corretto

Ultima modifica di ||ElChE||88 : 03-06-2009 alle 14:05.
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2009, 22:14   #4
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Per cui il tuo codice:
Codice:
xp = proc_addr(xp->p_sendto);
dopo che il preprocessore è passato a farsi il suo giretto, se la mia memoria del C non è del tutto arruginita, viene sostituito così:
Codice:
xp = proc_addr + NR_TASKS[(xp->p_sendto)];
quindi NR_TASKS è un array
Quello che non mi suona è che [(xp->p_sendto)] quello tra parentesi è un ....... anzi mi coorreggo: non è un puntatore ma un intero che rappresenta il numero del processo

Quindi l'assegnamento xp = proc_addr + NR_TASKS[(xp->p_sendto)]; fa puntare xp a proc_addr + indirizzo del processo interessato
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2009, 11:21   #5
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
up
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2009, 17:04   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
in questo scorcio di codice si dice che il wile verifica eventuale deadlock tra il chiamante e la destinazione ma anche tra gli altri processi: il punto è che non vedo nulla, parti di codice e solitamente '++' che incrementi alcun puntatore

Codice:
 07605	  /* Check for deadlock by 'caller_ptr' and 'dst' sending to each other. */
 07606	  xp = dst_ptr;
 07607	  while (xp->p_rts_flags & SENDING) {           /* check while sending */
 07608	        xp = proc_addr(xp->p_sendto);           /* get xp's destination */
 07609	        if (xp == caller_ptr) return(ELOCKED);  /* deadlock if cyclic */
 07610	  }
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2009, 17:15   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da misterx Guarda i messaggi
il punto è che non vedo nulla, parti di codice e solitamente '++' che incrementi alcun puntatore
Codice:
xp = proc_addr(xp->p_sendto);
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2009, 17:48   #8
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Codice:
xp = proc_addr(xp->p_sendto);
credo di non aver capito
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2009, 17:53   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
faccio un pò di ordine

EXTERN struct proc *pproc_addr[NR_TASKS + NR_PROCS];
#define NR_TASKS 4
#define proc_addr(n) (pproc_addr + NR_TASKS)[(n)]

xp = proc_addr(xp->p_sendto);

come si trasfrorma quindi xp ?
Cioè, cosa gli viene assegnato ?

Ultima modifica di misterx : 06-06-2009 alle 18:25.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2009, 10:08   #10
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
scusate ma ci sono arrivato dopo un pochino
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Grazie ai dati di ESA il calcolo della t...
Rilasciati nuovi video e immagini della ...
Gli astronauti cinesi di Shenzhou-20 son...
Mai così tanti gas serra: il 2025...
Google condannata in Germania: favorito ...
Ubisoft rimanda i risultati finanziari e...
ADATA porta i primi moduli DDR5 CUDIMM 4...
Bob Iger anticipa le novità AI di...
Microsoft Teams 'spierà' i dipend...
Michael Burry chiude Scion e fa di nuovo...
Huawei prepara i nuovi Mate 80: fino a 2...
Una e-Mountain Bike di qualità ma...
Tutte le offerte Amazon Black Friday pi&...
DJI Mini 4K Fly More Combo con 3 batteri...
Crollo di prezzo sui nuovissimi iPhone A...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v