Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-06-2006, 20:26   #1
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
Comunicazione da kernel a userspace

ho montato un simpatico modulo basato su lsf. il problema ora è che devo comunicare un paio di cose al un demonuccio in userspace...
di usare proc non se ne parla, il povero demonuccio richierebbe di non riuscire a leggere tutto in tempo.
af_unix? o ci sono altre alternative?

ciao!
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2006, 16:03   #2
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
uppete!
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2006, 16:48   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
connector
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2006, 16:50   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
su Windows è molto più facile
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2006, 16:53   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104
su Windows è molto più facile
Tra un driver di windows e un programma c'è qualcosa di più semplice del connector?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2006, 23:26   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ilsensine
Tra un driver di windows e un programma c'è qualcosa di più semplice del connector?
boh, so solo che è + semplice visto che dal programma si fa pure con fopen/fread/fwrite...
ed è anche molto versatile perché dal driver si può scegliere il tipo di I/O (direct, buffered, neither) senza che cambi nulla nel programma usermode
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 12:29   #7
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
Quote:
Originariamente inviato da ilsensine
connector
luminoso come al solito!
un po` meno la documentazione in Documentation/connector , ma mi accontentero` :-D
la parte client sembra molto semplice, ora giochero` un po` con l'esempio.

grazie, ciao!
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 14:26   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104
boh, so solo che è + semplice visto che dal programma si fa pure con fopen/fread/fwrite...
Stessa cosa su linux
Quote:
ed è anche molto versatile perché dal driver si può scegliere il tipo di I/O (direct, buffered, neither) senza che cambi nulla nel programma usermode
Stessa cosa su linux, per i device per cui ha senso (i block device)

Il problema di NA01 può essere risolto in maniera più semplice, con il connector. Mi chiedevo se sotto windows esistesse qualcosa di simile
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 14:27   #9
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da NA01
luminoso come al solito!
un po` meno la documentazione in Documentation/connector , ma mi accontentero` :-D
la parte client sembra molto semplice, ora giochero` un po` con l'esempio.

grazie, ciao!
Guarda i sorgenti di drivers/connector/cn_proc.c, è un esempio più pratico.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 15:29   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ilsensine
Stessa cosa su linux
e il nome del file come viene fuori? su Windows dipende: se la periferica ha un nome o un link simbolico nel branch "\DosDevices" del namespace globale (l'unico branch visibile a Win32) allora il nome da aprire con fopen deve essere semplicemente il nome della periferica preceduto da doppio slash-punto-slash; per esempio: "\\\\.\\C:", "\\\\.\\A:", "\\\\.\\CdRom0", "\\\\.\\Pippo", eccetera.
questo sistema però non è consigliato perché bypassa il sistema di sicurezza del PnP Manager: il driver che crea quei link simbolici deve poi gestirsi da se' la sicurezza di quella periferica associando ad essa un descrittore di sicurezza costruito manualmente.
quando invece la periferica non ha nome ne' link simbolici (cosa consigliata) allora affinché sia accessibile da usermode deve essere stata registrata una device interface, sulle quali però non so quasi nulla ^^
penso che quando registri la device interface, semplicemente il PnP Manager crea un symlink alla periferica e costruisce automaticamente un descrittore di sicurezza che la protegga da accessi non autorizzati (di solito i nomi del PnP Manager sono composti da hash kilometrici, hai presente no? ); insomma semplicemente vuol dire che il PnP Manager gestisce la sicurezza al posto tuo

Quote:
Stessa cosa su linux, per i device per cui ha senso (i block device)
per quali periferiche invece non ha senso...?
su Windows ha senso per tutte...

per "tipo di IO" io intendo semplicemente (su Windows) il modo in cui il programma user mode comunica i suoi dati al driver, che è un modulo caricato nel processo del kernel (il processo System, che ha PID = 8); i tre funzionano così:

bufferizzato - l'IO Manager prima di chiamare l'highest driver nello stack ricopia tutti i dati in un buffer bloccato in memoria di sistema (kernel space, non-paged pool) e quindi "sicuro"; ovviamente è la soluzione più dispendiosa e la si mette in atto solo per periferiche che devono trasferire pochi dati

diretto - il driver deve mappare in memoria di sistema il buffer usermode (soliti trucchetti col paging); il buffer usermode non è considerato sicuro perché nel frattempo un altro thread potrebbe deallocarlo, quindi dopo che tale buffer è stato mappato in kernel space è comunque necessario accedervi dentro un try-catch per evitare schermata blu, o quantomeno chiamare prima la ProbeForRead e ProbeForWrite per vedere se si può ancora leggere/scrivere su quel buffer

neither - uguale a diretto, solo che il kernel garantisce che il thread corrente al momento della chiamata al driver sia lo stesso che ha effettuato la richiesta in userland; di conseguenza non c'è bisogno di mappare il buffer in kernel space per accedervi perché da kernel mode si può tranquillamente accedere allo user space del thread corrente. è comunque bene circondare con try-catch

su Linux sono IDENTICI?

chi ha copiato?

Quote:
Il problema di NA01 può essere risolto in maniera più semplice, con il connector. Mi chiedevo se sotto windows esistesse qualcosa di simile
esiste qualcosa di più semplice di fopen e compagne?
come può essere? sono ridotte all'osso...

Ultima modifica di 71104 : 15-06-2006 alle 15:32.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 16:24   #11
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104
e il nome del file come viene fuori?
/dev/*

Quote:
per quali periferiche invece non ha senso...?
su Windows ha senso per tutte...
Per i char device, ad esempio. Non hanno in genere un backend di storage (come i dischi, per i quali si utilizzano i block device).

Quote:
bufferizzato - l'IO Manager prima di chiamare l'highest driver nello stack ricopia tutti i dati in un buffer bloccato in memoria di sistema (kernel space, non-paged pool) e quindi "sicuro"; ovviamente è la soluzione più dispendiosa e la si mette in atto solo per periferiche che devono trasferire pochi dati

diretto - il driver deve mappare in memoria di sistema il buffer usermode (soliti trucchetti col paging); il buffer usermode non è considerato sicuro perché nel frattempo un altro thread potrebbe deallocarlo, quindi dopo che tale buffer è stato mappato in kernel space è comunque necessario accedervi dentro un try-catch per evitare schermata blu, o quantomeno chiamare prima la ProbeForRead e ProbeForWrite per vedere se si può ancora leggere/scrivere su quel buffer

neither - uguale a diretto, solo che il kernel garantisce che il thread corrente al momento della chiamata al driver sia lo stesso che ha effettuato la richiesta in userland; di conseguenza non c'è bisogno di mappare il buffer in kernel space per accedervi perché da kernel mode si può tranquillamente accedere allo user space del thread corrente. è comunque bene circondare con try-catch

su Linux sono IDENTICI?
Non identici; le tecniche sono ovviamente differenti, ma puoi ottenere risultati simili.

Quote:
esiste qualcosa di più semplice di fopen e compagne?
come può essere? sono ridotte all'osso...
Per il driver utilizzare il connector è molto più semplice di creare un device node.
Al programma userspace, un messaggio inviato da/al kernel tramite il connector è molto simile a un datagramma udp.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 16:45   #12
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ilsensine
/dev/*
fico :P
ora capisco la "everything is a file" : )

Quote:
Per i char device, ad esempio.
e che so'?

comunque leggere e scrivere non è l'unico tipo di I/O che si può effettuare su una periferica su Windows: c'è anche l'API DeviceIoControl, e certe periferiche supportano anche altri tipi (sostanzialmente varianti di device I/O control, notifiche relative ad accendimento/spegnimento/standby, e poca altra roba).

ne approfitto per chiederti una cosa che non sono mai riuscito a capire: che tipo di modello è il kernel di Linux? monolitico? microkernel? microkernel modificato (come Windows)? sapevo che fosse monolitico ma poi un amico che non conosce molto bene questa terminologia mi ha confuso le idee... ^^
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 16:54   #13
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104
e che so'?
Mentre per i block device sono comuni tutta una serie di necessità di bufferizzazione, readhaead ecc. (fornite automaticamente dal kernel, senza collaborazione del driver), i char device rappresentano quei nodi per i quali non è possibile definire una forma comune. I dispositivi più disparati (ed anche esotici) sono gestiti come char device: l'rtc, i generatori di numeri casuali, la famiglia di driver audio, i driver per nvram, chip i2c ecc. sono char device. Per alcuni non hanno neanche senso le primitive di read/write, essendo gestibili solo tramite ioctl (la tua DeviceIoControl).
Ad un programma la differenza tra char e block device non è molto evidente (un cat /dev/zero funziona come un cat /dev/hda), ma influenza profondamente come è strutturato il driver.

Ci sono molti altri modi di comunicare con un driver; il connector che ho suggerito a NA01 è uno dei più recenti, ed è un derivato di una tecnica più datata chiamata "netlink".

Quote:
ne approfitto per chiederti una cosa che non sono mai riuscito a capire: che tipo di modello è il kernel di Linux? monolitico? microkernel? microkernel modificato (come Windows)? sapevo che fosse monolitico ma poi un amico che non conosce molto bene questa terminologia mi ha confuso le idee... ^^
Monolitico. E' molto modulare, ma modulare non vuol dire microkernel (immagino sia l'errore che ha commesso il tuo amico).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 15-06-2006 alle 17:07.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 17:19   #14
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4747
Quote:
Originariamente inviato da 71104
che tipo di modello è il kernel di Linux? monolitico? microkernel? microkernel modificato (come Windows)? sapevo che fosse monolitico ma poi un amico che non conosce molto bene questa terminologia mi ha confuso le idee... ^^
credo che lo si possa considerare ibrido per via della concezione e del modo in cui e' stato sviluppato, ma in effetti nemmeno quello di NT e' un microkernel , sebbene per conciliare eleganza e prestazioni e' stato aggiunto ad un microkernel, un Executive "dotato di tutto", (window management incluso) threaded e formalizzato in termini di API e ABI interne
apparentemente, il metro di paragone piu' comune per distinguere i microkernel dai "macrokernel" e' il range di funzionalita' che vengono fatte assolvere al kernel (task scheduling e basta, scheduling piu' paging e basta, scheduling piu' paging piu' filesystem piu' networking piu' device management e tutti i driver, ecc...), e il numero e livello delle "astrazioni" che il kernel implementa (microkernel puro <=> processi)
mentre quello per distinguere quelli puramente monolitici dagli altri e' il modo in cui nuovi componenti software, per funzionalita' aggiuntive o supporto di corrispettivi nuovi componenti HW, possono essere aggiunti ad un sistema a runtime (se ricompilando il kernel dopo aver aggiunto una patch o marcato attivo un ramo del source tree o aggiungendo un modulo al kernel o cambiando una variabile di configurazione e/o (ri) avviando un proesso userland)
altro metro di paragone e' a livello delle differenze tra le API, dell' invarianza o meno a livello di API e di ABI ... ma in effetti influenza le implementazioni e il behaviour nei casi di cui sopra
tutto AFAIK
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name
Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish
Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate

Ultima modifica di jappilas : 15-06-2006 alle 17:26.
jappilas è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
AMD Radeon RX 9060 XT: staccato (di molt...
WhatsApp introduce la condivisione della...
iPad con chip A16 a 339€: l'11'' con 128...
OpenClaw spaventa le aziende: perch&eacu...
Samsung T7 2TB crolla su Amazon: SSD por...
Tutte le JBL a prezzi da non perdere su ...
PS6 e RDNA 5: la GPU sarà 'quasi ...
Meta cambia rotta sul metaverso: Horizon...
Zeekr debutta in Italia con Jameel Motor...
Robotaxi sotto controllo remoto: Waymo a...
Ubisoft continua i tagli: 40 licenziamen...
PromptSpy: il primo malware Android che ...
Navigare all'estero con costi accessibil...
Boom del fotovoltaico in Africa: +54% in...
Cisco mette l'IA agentica al centro con ...
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: 14:10.


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